Warning: some pretty geeky computer stuff ahead.
Look toward the end for 'What I need' to see if you can help.
Greetings all. I know that there was a thread similar to this posted awhile back but it seemed to focus more on the hardware side of adding video inputs. I'm creating this thread to specifically talk about the software that iMid runs, how to hack it, and what I've discovered so far. Even if this thread doesn't get any/many responses right away, it will get picked up by google and maybe useful to someone in the future. I'd like to try to keep discussion in this thread technical with the goal being to figure out how to successfully modify the software runs the iMid.
Alright with all that out of the way, here is what I've discovered so far:
Hardware/software:
Software discoveries so far:
What I need:
-------------------------------------------------------------------------
Well, thats all I have so far. If you have any ideas, discoveries, questions... feel free to post. I'll update my thread as I discover new things.
Look toward the end for 'What I need' to see if you can help.
Greetings all. I know that there was a thread similar to this posted awhile back but it seemed to focus more on the hardware side of adding video inputs. I'm creating this thread to specifically talk about the software that iMid runs, how to hack it, and what I've discovered so far. Even if this thread doesn't get any/many responses right away, it will get picked up by google and maybe useful to someone in the future. I'd like to try to keep discussion in this thread technical with the goal being to figure out how to successfully modify the software runs the iMid.
Alright with all that out of the way, here is what I've discovered so far:
Hardware/software:
- The iMid unit was made by a company called Johnson Controls Inc., a large supplier of car infotainment systems.
- The non-navi units are running a Renesas SH7761 400mhz SH-4 cpu (SH7761).
- The OS is custom version of QNX built for the sh7761. I'm not sure which version yet, but I think it's reasonable to assume something based on the QNX Car Platform (as opposed to Neutrino or any one of their other embedded packages).
- The file system used for the OS is something called ETFS. This is a transactional file system for flash based storage exclusive to QNX. Note that when mounting ETFS files, /dev/etfs1 is the default for the raw boot image.
Software discoveries so far:
- Based on the instructions in this thread (iOS in the Car/Siri Update) I paid the $10 to grab a copy of the official HFL updater software to install the latest software update to the iMid
- The software seems to download every firmware update release so far for the iMid. It's located in C:\JohnsonControlsIncBRT\UpdatePackages.
- Upon closer inspection each firmware package is simply an archive using gzip compression (7zip will be your best friend here). Each file contains a root ini manifest which instructs the iMid itself to check for compatibility before installing. Then you have 18 more gziped packages called "up.0, up.1, up.2 ..." It seems that the HFL updater sends each of these "up" packages individually to the iMid during update.
- up.0 contains a manifest called 'main_instructions.ini'. This file is useful because it shows the offsets used of each nand files in up.2 - up.17 which is a raw ETFS image.
- up.2-up.17 contain folders called 'whole_nand' which contain a gziped chunk of the userland ETFS filesystem that the iMid software runs off of. These end up all getting mounted to /dev/etfs2 on the iMid.
- I haven't been able to mount the individual raw filesystem chunks yet but I have browsed through them with a hex editor. Some pretty interesting stuff. Seems like a lot of configuration is done by XML which gives me hope. I think the iMid's GUI is driven by adobe flash.
- VMware Player - free VM software for running qnx.
- QNX vmware image (30-day evaluation) - useful for mounting, creating, modifying ETFS filesystems. The 2 magic terminal commands you are looking for are 'fs-etfs-ram' and 'etfsctl'. Note: The source code to these supposedly is out there where you can compile and run inside of your favorite *nix. I wasn't able to track it down though.
What I need:
- Shot in the dark but if anyone ends up with a busted iMid system (any model for the 9th gen) that they would like to part with for cheap or free in the name of science.
- I've been working with *nix for nearly 20 years now and dabbled with QNX about 10 years ago (I don't believe ETFS was around back then). I need someone who has *nix or embedded experience and who knows how to mount file systems. Specifically I'm having a problem trying to mount the individual raw chunks of the ETFS. I'm not clear how you go about mounting them all of them as one. When I run
Code:
fs-etfs-ram img.etfs.1
Code:mount -t etfs /dev/etfs2 /tmp
I've searched high and low and so far can't figure out why this error occurs. I'm sure I can figure it out eventually, but figured I ask in case anyone has any experience with this.
-------------------------------------------------------------------------
Well, thats all I have so far. If you have any ideas, discoveries, questions... feel free to post. I'll update my thread as I discover new things.
Attachments
-
53.8 KB Views: 258