Monthly Archives: January 2013

Telechips TCC8900 Toolkit

Part 1: Rooting
First of all, you can root any android device, back it up, flash it, etc. The trick to rooting unknown devices is reverse engineer thinking applied to the problem, as in without opening the device, you can infer that one of the usb ports and the sd slots must be for debugging and administration. Moreover, all the proprietary software has to be backed up as well.
XDA is a great first start.
Over here at uncompiled, they have already broken down the basics of the windows shell most dynavins have.
Part 2: Developing a rom and apps for the TCC8902 board in my BMW 330xi (E46)
It currently runs WinCE 6 as the master OS and can use NAVI real button and MENU>GPS virtual button to switch views to a virtual Android 2.3 device on the same chip while running both OSes.
Ultimately, in order to save the CPU and RAM of the device, I want to get rid of WinCE 6, and flash the TCC89xx with my own custom Android build and apps.
Nucleus RTOS
I don’t want to reinvent the wheel any more than I have to, so it is imperative I make a backup, a virtual device for proof of concept, and then actually implement and test my build on the virtual device before I reflash the existing device.
Features:
OEM Look
Open hardware and software
Nucleus(IDE/Android/Ubuntu)
LOW/NO VOLATILITY
RUGGED SOFTWARE
BMW CANBUS
BMW OBD2
Mali GPU
750mHZ single core cpu
Operations:
1) Car Start
+12V Power On
Amp delay or limiter to prevent pop
Boot from S4
Bootloader Loads RTOS
RTOS Checks for OS selection
Bootloader Loads Ubuntu or (Android)
Ubuntu with Backtrack Framework resumes
OR
Android with Busybox and SuperSU loads
Do the following:
A)
1) Setup development environment
2) Create virtual devices based on exact specifications
3) Backup existing rom and apps from actual device to virtual device
4) Save virtual device
B)
1) Root existing system (supersu, busybox, and mount r/w)
2) Install root toolbox, rom toolbox, and
3) Backup existing system to mnt/sd-ext
C)
1) Push rom and apps to virtual system
2) Test
3) Deploy
D)
1) Root existing system
2) Backup existing system completely
3) Wipe existing system
4) Bootload new rom

Getting Started Android Programming

Getting Started with BusyBox

Assuming you have a rooted android device with su and busybox installed, botbrew counts too, read the following and play with the command line.
In the follow up we will write android shell commands using busybox to perform tasks and achieve goals not possible from the basic android toolbox.
Symlinking explained
Commands here
Links here
Scripts here
Now that we have become familiar with busybox, and the android shell, we can make an android app in java using the android sdk and the busybox library.
Android project files
Android package
Comparable programs are rom toolbox pro, root toolbox pro, supersu, etc.

Done with Dynavins

The most popular brand of embedded systems for the E46 series BMWs is the Dynavin. They make a WinCE 6 and an Android 2.3 version. The WinCE 5 version is discontinued, and the WinCE6 version comes with or without android on a separate partition. I’ve put together a complete Dynavin support library, with multiple versions of igo and other apps for wince and android, and I am tired of the BS. I need a universal ROM and a deployment script to figure out each system’s maximum capabilities and deploy itself to spec for the board its writing to.

The Dynavin is available from http://jandtdistributing.com/dynavinsolutions/bmw-stereo-navigation-units-and-accessories/dynavin-e46-d99-android/ for 799, and http://www.dynavinstore.com/shop/bmw-series/dynavin-dvn-e46-d99.html for 990.17 not including the backup camera, 3G dongle, wifi dongle, hdtv tuner, hd radio tuner, ac relocation kit or SH. So yeah, if you want an all in one unit and dont want to develop anything or pwn your car, then just go there and blow money on that.

Not all of us bought our BMWs new, and we don’t have a small fortune to spend on a little embedded computer. Fewer of us still, like myself, are willing to pay for a computer, but will not buy one without having root, the full functionality expected or exploitable from it, and the look of OEM as well. There is now a huge market for Dynavin clones which provide similar function, although the performance and quality of the clones compared to the original Dynavin are inferior. I have a clone which came with all the extras and am still dissatisfied. However, all these units come from China and thus cannot be economically returned.

I have been through a D95 unit, and a D99+Android clone, and I am very dissatisfied. I eventually want to put together a library so a single rom can be flashed to the myriad boards which roots the box, backs up everything to sd card, unmounts sd card, loads packages, builds, and flashes the generic rom over with the self customized rom, and runs real time. These boards, embedded in these aftermarket stereo systems, can all run the same RTOS, android or not, and I will make the SD prep tool and common image available publicly, so like a liveCD, every aftermarket navigation radio can boot. From the live boot, the script will build a rom customized to the chips capabilities, rooting it, deploying busybox and botbrew, and installing whatever other packages are appropriate for the chip.

The biggest problems are canbus/ibus communication with the steering wheel and radio buttons, the uninterruptible power supply, and wiring the HDTV and Backup video into the video and HD Radio tuners into the audio. The GPS, DVD, and USB units are all onboard most of these units, but what varies most among them all is the board used and the FAKRA/canbus connection. Until all the boards are documented, the best workaround will be tapping the canbus and using one of the usb canbus adapters with linux libraries like bus pirate or stk500.

E46 Dynavin Replacement

Developing a rom and apps for the TCC8902 ARM automotive evaluation board (The WinCEN WinCE 6/Android 2.3 Dynavin Clone) in my BMW 330xi (E46)
It currently runs WinCE 6 as the master OS and can use NAVI real button and MENU>GPS virtual button to switch views to a virtual Android 2.3 device on the same chip while running both OSes.
Ultimately, in order to save the CPU and RAM of the device, I want to get rid of WinCE 6, and flash the TCC89xx with my own custom Android build and apps.
Nucleus RTOS
I don’t want to reinvent the wheel any more than I have to, so it is imperative I make a backup, a virtual device for proof of concept, and then actually implement and test my build on the virtual device before I reflash the existing device.
Features:
OEM Look
Open hardware and software
Nucleus(IDE/Android/Ubuntu)
LOW/NO VOLATILITY
RUGGED SOFTWARE
BMW CANBUS
BMW OBD2
Mali GPU
750mHZ single core cpu
Operations:
1) Car Start
+12V Power On
Amp delay or limiter to prevent pop
Boot from S4
Bootloader Loads RTOS
RTOS Checks for OS selection
Bootloader Loads Ubuntu or (Android)
Ubuntu with Backtrack Framework resumes
OR
Android with Busybox and SuperSU loads
Do the following:
A)
1) Setup development environment
2) Create virtual devices based on exact specifications
3) Backup existing rom and apps from actual device to virtual device
4) Save virtual device
B)
1) Root existing system (supersu, busybox, and mount r/w)
2) Install root toolbox, rom toolbox, and
3) Backup existing system to mnt/sd-ext
C)
1) Push rom and apps to virtual system
2) Test
3) Deploy
D)
1) Root existing system
2) Backup existing system completely
3) Wipe existing system
4) Bootload new rom