New FC USB-serial tools

Mychaela Falconia falcon at freecalypso.org
Wed Nov 22 00:20:10 UTC 2023


Hello FreeCalypso community,

I am pleased to announce a new addition to our software family: a suite
of tools for working with USB-serial chips, currently FT2232x from FTDI
and CP2102 from Silabs.  The first official release is here:

https://www.freecalypso.org/pub/GSM/FreeCalypso/fc-usbser-tools-r1.tar.bz2
https://www.freecalypso.org/pub/GSM/FreeCalypso/fc-usbser-tools-latest.tar.bz2
(symlink)

I've been working with FT2232x chips (both FT2232C/D, recently
discontinued, and FT2232H, still active) since 2017, and I've been
programming their EEPROMs with my own tools since 2018.  My FTDI EEPROM
tools began life as not-fully-documented, my-own-use-only hack living
in freecalypso-hwlab Hg repository, but eventually the tools grew to
deserve their own source repository (fc-usbser-tools), thorough
documentation up to FC quality standards, and formal releases.

All FreeCalypso hw products with FT2232x chips include EEPROMs, and
these EEPROMs are always programmed at FreeCalypso HQ (with these same
tools) prior to shipment to customers - but of course hacker-users
should always be empowered to modify their EEPROMs as needed, hence
the tools need to be released and documented.  Furthermore, there exist
some FT2232x-containing hw products that are not made by FC, but which
can benefit from EEPROM programming - the current case of most relevance
is Lattice iCEstick FPGA board.  Lattice factory ships these boards
with blank EEPROMs, resulting in FT2232H chip taking its default
VID:PID - but this ID is a poor choice for an FT2232x device that is
wired for MPSSE+UART configuration.  An alternative USB ID which Linux
kernel recognizes as a JTAG quirk is much more convenient, and can be
set with EEPROM programming; fc-usbser-tools package provides all
needed tools and instructions.

Besides FTDI chips, the new toolkit can also program the internal EEPROM
of classic CP2102 chips, the ones which require EEPROM programming in
order to switch between 230400/460800/921600 and 203125/406250/812500
baud rates.  This chip is NRND, but Sysmocom still supply 2.5 mm headset
jack serial cables with classic CP2102 inside, keeping this chip
relevant - and these Sysmocom-made cables are very convenient, no
complaints from me!  The original instructions (from OsmocomBB wiki,
using Python tools) for programming CP2102 baud rates are a royal pita:
Python tools come with dependency hell (I once got them working under
Slackware 13.37, but the move to Slackware 14.2 broke them), and the
actual instructions are anything but user-friendly.  However, with my
new tools this baud rate programming is as simple as:

cp2102-update-eeprom -b gsm

or the other way:

cp2102-update-eeprom -b std

using only an FC-native, minimal dependency (libusb only) C language
tool, with no Python and thus no dependency hell. :)

Hasta la Victoria, Siempre,
Mychaela aka The Mother


More information about the Community mailing list