opencodi – building a new firmware for Pillar Codi robot

All project files are now on github:
Now here’s the skinny:
My nephew got a Codi robot a few years back. The toy is pretty lame and definitely not worth the > $100 that my sister paid for it. We played with it for about 10 minutes and it never got used again. Today I pulled it off the shelf to start reverse engineering it in hopes that I could make it into something fun and useful. 
Currently the robot only has the most basic functions as I can’t even get my Codi Parent app set up (The software interface from Pillar used to configure the device) as I can’t get past email verification. I have yet to get anything but an automated email response from Pillar Customer Service so I can’t even get the unit working as originally intended. It is essentially a paperweight at this point.
Coming up with a new firmware for this device is worth the time for a few reasons:
  1. These devices are cheap and readily available on ebay
  2. They look like a Reddit avatar
  3. They have all the right peripherals to make a cool IoT device
  4. The company is unresponsive and maybe out of business
I have disassembled the toy and found what hardware it is using:
  • Main processor: XR871ET – Datasheets | SDK
  • Audio processor: A101
  • Bluetooth(?): JL AS20AP24150
  • Storage: GD25Q64C – Datasheet
If I plug the robot into my Linux machine and run dmesg I get this error:
usb 3-3: new full-speed USB device number 60 using xhci_hcd
usb 3-3: Device not responding to setup address.
usb 3-3: Device not responding to setup address.
usb 3-3: device not accepting address 60, error -71
usb usb3-port3: unable to enumerate USB device
The chip does not have a USB connection, only UART and there is no built in USB to Serial converter on the board. Some tracing has confirmed that the USB port does connect to the UART of the chip using a non standard USB wiring configuration.
  • USB Pin #3 connects to Pin #49 UART0_TX
  • USB Pin #4 connects to Pin #48 UART0_RX
I have a USB to serial converter on the way (the one I have doesn’t seem to be working) and found a male micro USB plug with all 5 pins available to make the connection interface.
The USB pads on the back of the board connect to the JL AS20AP24150 chip.
  • DM pad connects to Pin #3
  • DP pad connects to Pin #4
Connecting a USB cable to these pads according to the label produces the same error in the terminal as seen above. I need to find a datasheet on this chip to see if I will need to reprogram it and why there are these breakout pads.
I am having trouble definitively identifying this chip and finding a datasheet and could use some help on this. Here is the chip:
 

Can someone find this please!!!???
Finally storage is handled by a GigaDevice 25Q64CS chip and a 4Gig SD card.
Road-map:
  1. Acquire USB to Serial converter and create custom USB plug for reading/writing firmware to XR871 chip.
  2. Determine if existing firmware image can be de-compiled and edited or if a new FW will need to be written from scratch.
  3. Trace out all connections and create a detailed schematic of the motherboard.
  4. Create custom firmware. Can I make this thing run Linux?
  5. Use Codi as a control hub for smart devices similar to Siri or Alexa… Mycroft or Rhasspy?
I am open to any ideas, suggestions or collaborations.

Leave a Reply

Your email address will not be published. Required fields are marked *

RoboPirates: DENIED! * Time limit is exhausted. Please reload the CAPTCHA.