Preparing the system

Making the Raspbain system Ready

Tested System:

Raspberry PI 3B+ running raspbian OS Lite

  `.::///+:/-.        --///+//-:``    pi@firmwareuploader
 `+oooooooooooo:   `+oooooooooooo:    -------------------
  /oooo++//ooooo:  ooooo+//+ooooo.    OS: Raspbian GNU/Linux 10 (buster) armv7l
  `+ooooooo:-:oo-  +o+::/ooooooo:     Host: Raspberry Pi 3 Model B Plus Rev 1.3
   `:oooooooo+``    `.oooooooo+-      Kernel: 5.10.17-v7+
     `:++ooo/.        :+ooo+/.`       Uptime: 4 mins
        ...`  `.----.` ``..           Packages: 549 (dpkg)
     .::::-``:::::::::.`-:::-`        Shell: bash 5.0.3
    -:::-`   .:::::::-`  `-:::-       Terminal: /dev/pts/0
   `::.  `.--.`  `` `.---.``.::`      CPU: BCM2835 (4) @ 1.400GHz
       .::::::::`  -::::::::` `       Memory: 78MiB / 924MiB
 .::` .:::::::::- `::::::::::``::.
-:::` ::::::::::.  ::::::::::.`:::-
::::  -::::::::.   `-::::::::  ::::
-::-   .-:::-.``....``.-::-.   -::-
 .. ``       .::::::::.     `..`..
   -:::-`   -::::::::::`  .:::::`
   :::::::` -::::::::::` :::::::.
   .:::::::  -::::::::. ::::::::
    `-:::::`   ..--.`   ::::::.
      `...`  `...--..`  `...`
            .::::::::::
             `.-::::-`

Hardware wise:

Some other extra things:

So I designed an all-in-one platform with the raspberry pi, custom keyboard (based on ATMega32u4 + cherry keys + cherry key sockets) an FTDI chip (as programmer for target, connected to pi over usb serial) and a display (more details later).

Here is the HW over view of the platform that I designed.

If you do not use it you do not have to follow along.

The platform:

The project files:

Assigning fixed Chip ID for FT232RQ chips are necessary:

We have the FT232RQ FTDI chips in:

  1. Watch PCB (used for serial functionalities)

  2. With Thermal printer contraption used by for our system to print out some physical debug messages. My and suggested USB to serial adapter is based on FTDI FT232RQ. (HW pictures and assembly guide in later pages)

  3. In the above PI's based all-in-1 system PCB for Serial to UPDI part, for programming the watch.

The serialport_manager.py has logic to avoid (should avoid) both the thermal printer and the UPDI HW so that in can always scan (in a parallel threads) for unique FTDI chip ID (and avoid others).

This way one can hot swap watch PCBs while the script is running as the serial port module and can manage all the different ports (like SERIAL UPDI PORT, THERMAL PRINTER SERIAL PORT and WATCH's UART PORT).

What are those static unique FTDI chip IDs?

In global_vars.py, if you take a peek, you can see:

updi_ftdi_id = "A10KHTR4"
thermal_printer_serial_chip_id = "AC01O32Q"

How to assign unique chip ID and to which FT232RQ chips?

DOWNLOAD and INSTALL the FTPROG software from here. Read the usage guide and it's very easy to provide custom parameters to an FT232RQ this way.

To which parts?

Last updated