FreeCalypso > hg > freecalypso-hwlab
view doc/DUART28-EEPROM-config @ 78:f0b0970fbe2e
doc/DUART28-EEPROM-config article written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 17 Sep 2020 04:18:46 +0000 |
parents | |
children | df4bf4e06221 |
line wrap: on
line source
The EEPROM on the DUART28 adapter board has two valid configurations: DUART28C and DUART28S. As of this writing the S configuration is the default shipping one, but this situation may change in the future. The difference between the two configs is in the USB VID:PID presented by the USB device, and this USB ID difference has the following practical impact: * The C configuration presents a custom USB ID and requires a custom patch to the Linux kernel ftdi_sio driver in order to work - without this ftdi_sio driver patch it won't work at all. But if you do go through the pain of applying the needed patch to your Linux kernel ftdi_sio driver, the reward is that you get not only the two Calypso UARTs, but also working boot control outputs. * The S configuration presents the default FT2232x USB ID and is therefore supported out of the box by the standard Linux ftdi_sio driver without needing any patches. However, the adapter's CTL1 and CTL2 outputs cannot be used in this configuration (they will be bogusly asserted whenever Channel B ttyUSB device is opened), and thus they must be left unconnected, and you don't get to play with the remote boot control feature. The physical hardware is identical between the two configurations, only the EEPROM programming changes, thus end users need to be able to switch freely between the two EEPROM configs as they wish. This article explains how to program the EEPROM back and forth between the two configs. Determining your current DUART28 config ======================================= Connect the USB cable between your DUART28 board and your Linux host, and observe dmesg output. If your DUART28 board is in the C configuration, it will present as USB ID 0403:7152, and if it is in the S config, it will present as USB ID 0403:6010. You can also see these USB IDs with lsusb. The product ID string is also programmed as "DUART28C" or "DUART28S". Converting from DUART28S to DUART28C ==================================== If your DUART28 board is currently in the S config, its USB ID will be 0403:6010, which is the default ID for FTDI's two-channel FT2232x family. Because it is the standard default, there are plenty of other gadgets using the same ID - thus you need to ensure that you have no other USB devices with the same ID connected to your system during the reprogramming operation. Run lsusb and ensure that you see only one USB device with ID 0403:6010. Ensure that this one device really is your DUART28 board: unplug that USB cable and make sure that the device disappears, plug it back in and make sure that it reappears. One you have confirmed that you won't inadvertently hit some other FT2232x device, execute the actual programming command as follows (from the top directory of this code repository): ftee-gen2232c eeproms/duart28c $Serial | fteeprom-prog i:0x0403:0x6010 (See FTDI-EEPROM-tools article for other ways to specify the target device to fteeprom-prog.) Replace the $Serial metavariable with the 3-digit serial number of your DUART28 adapter board as it appears on the factory serial number sticker. After this operation completes successfully, unplug and replug the USB cable between the DUART28 board and your host - the adapter should now show up with USB ID 0403:7152. Converting from DUART28C to DUART28S ==================================== If your DUART28 board is currently in the C config, its USB ID will be 0403:7152, which is a private ID that belongs to us and should not be used by other parties. The reverse conversion command is as follows: ftee-gen2232c eeproms/duart28s $Serial | fteeprom-prog i:0x0403:0x7152