FreeCalypso > hg > fc-usbser-tools
annotate doc/Replug-after-EEPROM-write @ 68:5cbde3c80c24
fteeprom-{erase,prog}: detach logic: change to detach by default
As it turns out, detaching all ttyUSB interfaces of a multichannel device
does not require outside knowledge of how many channels there are, as in
our previous -d option design that is being removed here - instead we can
read the bNumInterfaces constant from the USB device's config descriptor
and thus know how many interfaces there are in total. Based on this
discovery, change the design of fteeprom-{erase,prog} as follows:
* remove -d option;
* flip the default to where we detach all interfaces by default;
* add -n option to NOT detach any interfaces.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Wed, 13 Sep 2023 06:37:03 +0000 |
| parents | b6a5ee85c6a3 |
| children |
| rev | line source |
|---|---|
|
47
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
1 USB replug after EEPROM modification |
|
34
f5fbcf1ff032
doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 ==================================== |
|
f5fbcf1ff032
doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 |
|
47
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
4 With the current state of software, if you use any of the tools provided in |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
5 this package to modify the configuration EEPROM content of your USB-serial |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
6 adapter device (FTDI, CP2102, possibly others to be supported in the future), |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
7 you then have to physically unplug and replug the USB device. This unplug- |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
8 replug sequence is needed because: |
|
34
f5fbcf1ff032
doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
|
47
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
10 * Most USB-serial chips require a deep reset in order to reread their EEPROM |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
11 and fully apply the new configuration, which may include a new USB VID:PID |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
12 or other USB descriptor changes. |
|
35
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
13 |
|
47
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
14 * With some chips safe and correct EEPROM programming requires unbinding the |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
15 kernel's usb-serial driver, causing the ttyUSB device for the USB-serial chip |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
16 (or multiple ttyUSB devices for multichannel chips) to disappear. With the |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
17 current state of Linux, we can command the kernel to unbind its drivers from |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
18 a specific interface on a specific chip (*without* rmmod of the responsible |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
19 driver, killing all other devices of the same tyoe), but we have no way to |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
20 tell the kernel to rebind everything when we are done. |
|
35
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
21 |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
22 Why is physical plug/unplug manipulation needed, why can't we command the needed |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
23 effect via software? As it turns out, there are no *valid* reasons why it can't |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
24 be done - but we are not currently able to do so because Linux kernel USB |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
25 maintainers are being pricks and won't support functionality that doesn't fit |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
26 into their worldview. Given that Harald Welte discovered this problem back in |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
27 2017: |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
28 |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
29 https://laforge.gnumonks.org/blog/20170524-usb-port-powercycle/ |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
30 https://marc.info/?l=linux-usb&m=149557709602259&w=2 |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
31 |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
32 (the thread shows Harald's good-faith attempt to reason with those pricks and |
|
f548ae912622
doc/FTDI-EEPROM-tools: update for 2023 sans-libftdi version
Mychaela Falconia <falcon@freecalypso.org>
parents:
34
diff
changeset
|
33 their dismissive responses) and given my own (Mother Mychaela's) sour experience |
|
47
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
34 with trying to get a simple patch into ftdi_sio (failed attempt to mainline the |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
35 patch adding support for DUART28C), the situation with Linux currently looks |
|
b6a5ee85c6a3
doc/Replug-after-EEPROM-write: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
35
diff
changeset
|
36 hopeless. |
