2004 to 2020 Mazda 3 Forum and Mazdaspeed 3 Forums banner
1,521 - 1,540 of 6,600 Posts
Is it possible to someone to share the file on torrent or something else.. to make a copy ?? thanks

Hi guys.
I don't have original SD. You can take a copy of any original SD.
To Modify Mazda_FEUR_NQ_20xx_xx.lyc for your VIN.
No need to use MazdaToolbox. Just copy files to SD.
Sorry, but really don't know how to modify Mazda_FEUR_NQ_20xx_xx.lyc
 
ok from memory this file is a template and the actual file it uses is somewhere else near there.. Check for .asoundrc file or maybe /etc/asound.conf . Sorry I can't tell you where as it was a while ago that I played around with this and haven't had time to check it out again.

Anyway the table specifies input channel, output channel, percentage. So the first line says output channel channel 0 should get 0% of input channel 0, and the second line says output channel 0 should get 100% of input channel 1, and similar for output channel 1. Have a look to see if there's a mux setting where the final value is neither 0.0 nor 1.0 .

ttable.INPUTCHANNEL.OUTPUTCHANNEL PERCENTAGE
What do the output channels correspond to. For example, is 0.0 front left? is 1.1 back right?
 
Is it possible to someone to share the file on torrent or something else.. to make a copy ?? thanks
It seems like the USA version of that file is called
Mazda_NA_NQ_2012_Q4.lyc
Maybe we can get a look at his modified European file and make the same changes to the US file.
 
What do the output channels correspond to. For example, is 0.0 front left? is 1.1 back right?
At this point it's two channel sound - stereo. I think the amp converts a two channel (L + R) signal into four channel. The head unit is just dealing with two channel, stereo sound.

So it's just one digit.. 0.0 refers to input channel 0, output channel 0. (It's a confusing format.) You should only need to modify the last value which is the percentage expressed as a value from 0.0 through to 1.0. E.g. you could set that to 0.5. E.g. 0.0 0.5 would set the left channel output to be 50% of the left input.
 
you would need a copy of the sd card.... the file is a flat file obviously if its easily changed...

anyways i got the car to change how it drives by injecting into it live. Its not nice, but does the job. I think this pretty much proves the sport mode is bs.

So 2.5L turbo setting anyone? :)
 
Anyone notice/know why yandreev3 was Banned from the forums? He was one of the guys that figured out how to clone the nav sd cards i think. That's a shame because he hosted all of the tweak files on his google drive which now requires permission to access.
 
I can't seem to make it do anything. The code in the driveridApp.js implies that it changes the types of speed warnings that are displayed.... kinda boring.

Strangely, the new apps no longer show up for me anymore.

I've been farting around with the systemApp.js and managed to get the system into a boot loop. It was bad. I thought I was hosed completely... was on the verge of calling the dealer to reset my system. But, I managed to get out of it. I'm posting here in case anyone else gets into this situation and wants to save a trip to the dealer.

I'm on linux, so this solution will not work for those on windoze.

The boot loop I had saw the network live for only a second or two before the system was rebooted. I found that if I left my USB drive and the navi SD card connected, that the network would often not even connect. So, I disconnected the USB drive nad SD card and saw the network come up more often than not.... different each boot, though. I'm using the output of the udhcpd process to tell me when the car has gotten it's IP.

In my linux, I had to install a program called sshpass. This program allows you to specify the password to an ssh or scp call in the command line.

With this installed, I waited for the IP to be ACK'd by the udhcpd and then ran the following command to overwrite the broken systemApp.js with a less-edited version that was known to work.

sshpass -p jci ssh root@192.168.0.249 "mount -o rw,remount /";sshpass -p jci scp systemApp.js root@192.168.0.249:/jci/gui/apps/system/js/systemApp.js

It probably took me 20 tries, but eventually, I got a window long enough to send the two commands and return the systemApp.js to a working condition. Phew!

So, there's a lesson here for me here... keep hacking! :)

Thank you!! I got my system into a reboot loop tonight. I was trying to use "plink" (putty utility) to do my fix. It didn't connect fast enough. "sshpass" connects faster.

In case it helps anyone, I modified your command to do it in a single sshpass command (instead of two back-to-back as you did). I found that the second one wasn't completing.

So, I put the original (good) systemApp.js onto the root of a USB stick, and plugged that into the second USB port.

I then tried several times to run "sshpass" to just execute the "mount" command (so I could see where it was mounted). The exact command was:

Code:
sshpass -p jci ssh root@172.16.0.133 "mount"
(my DHCP server gave the system a 172.16.0.133 address)

It only took a few tries - after I got the "mount" output I found that the USB stick was on "/tmp/mnt/sdb1" (SD card for NAV was on "/tmp/mnt/sd_nav"). Here's what the output looked like:

Code:
$ sshpass -p jci ssh root@172.16.0.133 "mount"
28440273582213404rootfs on / type rootfs (rw)
none on /sys type sysfs (rw,relatime)
none on /proc type proc (rw,relatime)
none on /dev type devtmpfs (rw,relatime,size=8192k,nr_inodes=96342,mode=755)
/dev/ffx01p1 on / type relfs (ro,noatime)
none on /sys type sysfs (rw,relatime)
none on /proc type proc (rw,relatime)
none on /dev type devtmpfs (rw,relatime,size=8192k,nr_inodes=96342,mode=755)
none on /tmp type tmpfs (rw,relatime,size=131072k)
/dev/ffx01p4 on /tmp/mnt/data type relfs (rw,noatime)
/dev/mmcblk0p2 on /tmp/mnt/data_persist type relfs (rw,noatime)
/dev/mtdblock5 on /config-mfg type squashfs (ro,relatime)
none on /dev/mqueue type mqueue (rw,relatime)
none on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mmcblk0p1 on /tmp/mnt/resources type relfs (ro,noatime)
/dev/sda1 on /tmp/mnt/sd_nav type vfat (rw,sync,dirsync,noatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sdb1 on /tmp/mnt/sdb1 type vfat (ro,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
These may differ on other systems (based on timing/etc), but here's what I did in order to copy the file off the USB stick into the correct place:

Code:
sshpass -p jci ssh root@172.16.0.133 "mount -o rw,remount / ; cp /tmp/mnt/sdb1/systemApp.js /jci/gui/apps/system/js/systemApp.js ; mount -o ro,remount /"
I hope this (slightly) quicker command is useful to others!

I think I'll stop hacking now that I've got things back to functional! :)
 
After causing a 'reboot loop' on my system today, I'm a bit hesitant to make other mods.

My feeling is that the best way to do any modding would be to overlay-mount stuff on top of the main root filesystem, but (and this is the key) only do that if (for example) a special file exists on a USB stick (or SD card).

This way, you can remove the USB stick/SD card and ensure that the special stuff we want to do will NOT happen on the next boot. At that point, you can ssh-in, backout your changes, then reboot/try again.

I see a couple of places where a 'hook' into the startup code may be possible. But, WARNING I HAVE NOT TRIED THIS! YOU COULD BRICK YOUR DEVICE IF YOU DO SOMETHING WRONG!

"/usr/bin/autostart" "sources" (with ".") "/jci/scripts/start_normal_mode.sh".

"/jci/scripts/start_normal_mode.sh" has the following:

Code:
if [ -e /data_persist/dev/bin/autorun ] ; then
    /data_persist/dev/bin/autorun &
fi
A 'key' here is the fact that it runs the "autorun" script in the background, ignoring any results. Even if you had a typo in this script, it shouldn't cause any problems to the calling script.

So, it seems that you could ssh-in, "mkdir -p /data_persist/dev/bin", then create an "autorun" script inside that directory (assuming that script doesn't already exist!)

As a test, this "autorun" script could be simple - just "echo" something to a file in "/tmp". If you reboot, then ssh-in and find this file in "/tmp", then it means the script ran. For example, the script could look like this:

Code:
#! /bin/sh
echo "$0: I am running!" >> /tmp/i_am_running.txt

Be sure to "chmod +x /data_persist/dev/bin/autorun" after you create the "/data_persist/dev/bin/autorun" file (make it executable)

After rebooting, ssh-in and look for "/tmp/i_am_running.txt". If that file is there, then we have a 'hook' into the boot process. This may or may not be 'too late' to do an overlay-mount of replacement GUI files, but it's a starting point.


Similarly, a couple of scripts have the following line:

Code:
/jci/scripts/show_version.sh &
This script currently just echo's some stuff to stdout:

Code:
#!/bin/sh

FLAVOR=$(cat  /jci/version.ini | grep JCI_SW_FLAVOR | cut -f2 -d"\"" )
VERSION=$(cat  /jci/version.ini | grep JCI_SW_VER | cut -f2 -d"\""  | tr -d '\n')

#logger "=============== $OUTPUT ==============="
echo "=============== $VERSION  Flavor $FLAVOR ==============="
I don't think the output is important. Again, the calling scripts run it in the background ("&"), so it seems that they don't care about what happens in the script.

The two scripts I see running "show_version.sh" are "/jci/scripts/start_normal_mode.sh" (the same script above that optionally runs "/data_persist/dev/bin/autorun") and "./jci/scripts/start_test_mode.sh". I assume that "start_test_mode.sh" isn't normally run, so "start_normal_mode.sh" is (again) the place where the 'hook' will be invoked.

(I'm assuming that "start_normal_mode.sh" *does* run on normal boots)


In this case, just modify "/jci/scripts/show_version.sh" to do something after the "echo" commands, like the following:

Code:
#!/bin/sh

FLAVOR=$(cat  /jci/version.ini | grep JCI_SW_FLAVOR | cut -f2 -d"\"" )
VERSION=$(cat  /jci/version.ini | grep JCI_SW_VER | cut -f2 -d"\""  | tr -d '\n')

#logger "=============== $OUTPUT ==============="
echo "=============== $VERSION  Flavor $FLAVOR ==============="

echo "$0: I am running!" >> /tmp/i_am_running.txt


I believe either of these 'hooks' should be safe to add, but as I just made a 'reboot loop' of my device tonight, I'm hesitant to try it (and I think everyone else should be hesitant as well).

Of course, the examples I list above do nothing. But, they could be expanded to (for example) look for an "autorun" file on USB/SD, and (if it exists) run that script. That script could do anything/everything, and if it ever had a problem, you'd just need to remove the USB stick/SD card to fix the problem.

I envision a USB stick/SD card that mounts an overlayfs on top of the /jci directory, replacing files inside of it. I'm not sure if overlayfs works nicely with FAT32 (probably not). In that case, it could loopback-mount a squashfs filesystem image (that's stored on FAT32) to a "/tmp" directory, then overlay-mount that filesystem on top of "/jci" (and/or other directories). If we find that the main GUI has already started by the time we run our 'hook' script, that script could kill the GUI and restart it again (with our overlayfs in place).

If you are a Linux developer and understand what I'm suggesting, and if you agree it seems safe, and if you don't mind risking an issue on your device, it would be interesting to see what happens. BUT I CAN'T STRESS ENOUGH HOW RISKY THIS COULD BE TO A NOVICE (or simply someone who makes a typo - like I did earlier!)

Maybe I'll try it after I've had a bit of time to recover from the panic I had tonight... :)
 
This is my first post. Thanks for all the efforts in this very informative thread.
I have done the speed restriction setting successfully and hoping i would be able to unlock Pandora in my Mazda Connect.

After reading the whole thread with some having to go through reboot loop issues I could not seem to find the courage to edit the systemApp.js and modify the items.push < 'pandora', isVisible' : false > to true.

I need some confidence boost from you guys if by just changing false to true in this line is enough to enable Pandora.

I will greatly appreciate if you could give me some advice on what exactly needs to be done to avoid any issues.

Pandora is not enabled in Mazda Connect Middle East version but I have been using Pandora through VPN. I'm kinda attached to it and been using it for almost 2 years now in my Centrafuse CarPC in the other car.

Mazda Connect OS Version here in Dubai is 51.00.300

Thanks in advance.
 
@tserman: I just changed the part of the line from false to true in my virtual environment on my pc. "Pandora" is visible after this change.

To verify that my virtual environment has the same behavior as the JCI system, I deleted a "," in the systemApp.js and reloaded the interface. After that, the interface runs into a timeout. I think it is the same timeout which causes the reboot loop on the JCI.

In my opinion it should work when you change the "false" into "true". But maybe there is another mechanism which locate the position of your car and disable Pandora again if the position is not in the U.S. And I haven't test it in my car, only in my virtual environment!
 
1,521 - 1,540 of 6,600 Posts