IOIO V1 Dealing with Firmware Versions and Android, PC and Mac


Last updated 4/18/2013

IOIO programs run on Android devices, PCs or other types of computers. They communicate over USB or Bluetooth to firmware programmed into the IOIO Pic chip.   Control programs are built using an IOIOlib library that knows the communication protocol between the program machine and the IOIO board.  Both sides of this communication must agree on the protocol and payload of this communication.


Each version of the IOIO firmware comes with its own library that was built for that firmware. Host programs must be linked to an IOIO library whose major version number is less than or equal to the major version of the your device's firmware. This works because Ytai tries to make sure that firmware is backwards compatible with previous versions.

  • Programs compiled against any version 3.yy IOIOlib should be able to communicate with any 3.xx Firmware devices. EX: Programs built against 3.23 can talk with IOIO devices running Firmware 3.26.  I was able to run demo programs from the public V3.30 downloads with my V1 running firmware 3.23.
  • Programs compiled against firmware V4.xx or V5.xx will will probably not communicate with devices running Firmware 3.x.
This means that you may not be able to use the latest programs in the Google Play store when using with an IOIO board with older firmware. None of the example programs in the store (4/2014) would communicate with my IOIO V1 and its two year old v3.23 firmware.

Determining if App and Firmware Version are compatible

My PC and Mac testing where done over a Bluetooth link because IOIO V1 can only talk to PCs over Bluetooth.   The IOIO V1 can talk to Android devices over USB or over Bluetooth.  My hacked Nook Simple Touch does not have a Bluetooth adapter so I tested using ADB on top of USB.  I had no idea what firmware I had when I recently tried to talk to my two year old IOIO board. I was able to figure it out running different versions of HelloIOIOConsole on a PC / Mac.

See http://joe.blog.freemansoft.com/2014/04/ioio-bluetooth-and-windows-8-81.html for test results with Mac OS/X and Windows 8/8.1.

Running Android Applications with Android (V2.1) Firmware 3.03/3.23

None of the Google Play store example IOIO programs could communicate with my IOIO.  This was because those apps were bound to newer visions of the firmware than the 3.x in my V1.

I downloaded the App version 3.30 bundle, unpacked it, and side loaded it onto my Nook android tablet.  The 3.30 version apps ran fine with my 3.x which makes me reinforces my feeling Google Play store versions were built recently against the later version than was running on my IOIO.
Written 4/2014

I haven't tested the Google Play store apps with Firmware 3.11/4.00

IOIO Bootloader and Firmware Upgrades

V2 boards can be updated using PCs or external programmers. I do not have a V2 board to test.

V1 boards must be updated using older Android devices or external programmers.  Newer versions of Android changed something that renders them useless for programming. This is one of the reasons the IOIO OTG was built to be programmable with PCs.

You can upgrade firmware using two IOIO boards, one as programmer and one as target. IOIOManager can use the bootloader to replace the application or can use the built in programmer mode to replace both the bootloader and the application.

I was unable to update the Application with my Nook Simple Touch because the Nook Simple Touch never saw my device. It may be a version mismatch between what I downloaded and my V1 hardware version number

I was able to update the bootloader and firmware on my V1 unit after purchasing another V1 off of EBay.  The Nook Simple Touch had no trouble programming the boot loader and application firmware using one V1 to program the other and then the reverse.

Conclusion

 to be written




Comments

Popular posts from this blog

Understanding your WSL2 RAM and swap - Changing the default 50%-25%

Installing the RNDIS driver on Windows 11 to use USB Raspberry Pi as network attached

DNS for Azure Point to Site (P2S) VPN - getting the internal IPs