Model BT Home Hub 5A
Architecture xRX200 rev 1.2
Target Platform lantiq/xrx200
Firmware Version OpenWrt 23.05.2 r23630-842932a63d / LuCI openwrt-23.05 branch git-23.306.39416-c86c256
Kernel Version 5.15.137
Periodically (more than once an hour) I get this message in the system log and my LTE modem is disconnected and has to go through the reconnection process again, which takes 15s to 20s, so it is quite disruptive:
kern.err kernel: [...] dwc2 1e101000.usb: Not connected
kern.info kernel: [...] dwc2 1e101000.usb: NYET/NAK/ACK/other in non-error case, 0x00000002
kern.info kernel: [...] dwc2 1e101000.usb: NYET/NAK/ACK/other in non-error case, 0x00000002
kern.info kernel: [...] dwc2 1e101000.usb: NYET/NAK/ACK/other in non-error case, 0x00000002
kern.info kernel: [...] usb 1-1: USB disconnect, device number 13
Sometimes there are less, or none, of the NYET/NAK/ACK/other info messages.
Any ideas about what might be causing this? Or how I might debug it further?
Thanks!
tried a powered USB hub ?
I don't think it's a power problem because I've already been there and the error messages were different - something like "bad USB cable?" AFAIR. So I enhanced the power supply and those error messages went away...
If this is just a generic error message then I suspect I am getting data transmission errors because the USB2 cable which is 3.5m is just not good enough for this length. It's very difficult to find a long USB2 cable (i.e., >3m) which actually works which is a pain considering the spec for USB2 is supposed to go up to 5m!
use two shorter cables, put the powered USB hub somewhere in the middle ?
Or, equivalently, buy an "active" usb cable, they are not that expensive. My worry about going down that route is that it might introduce additional latency as compared with using plain copper, so, before I try that, I'm going to have go at making one up from some CAT6 ether cable: use 3 pairs in parallel for the power and the remaining pair for the data. I'll report back on the result.
Thanks!
Made up a cable using a 4.5m length of 24AWG screened Cat 5 ethernet cable, wired as follows:
blue & blue/white : the differential data pair D+ & D- which are supposed to have a 90ohm +/-15% line impedance. (A twisted pair in a Cat5 cable has 100ohm impedance.)
green/white : CC (Configuration Channel) which is pin A5.
green, orange & brown: VBUS (+5V).
orange/white, brown/white & the screen drain wire: GND (0V).
WBOH would have been better to wire: CC green & GND green/white (so that the CC signalling is in a twisted pair with GND rather than a VBUS) and then the brown pair to both carry VBUS and the orange pair wired (as now) to take one of each. Plus the drain wire carrying GND means there are 3 VBUS wires and 3 GND wires, which minimises the resistance of the power circuit.
This cable can be driven flat out without producing any errors (tested by transferring files over Ethernet running over usb) and can power the em7455 modem using the original usb power supply in the HH5A, i.e., without benefit of any upgrade.
Note that a USB interface >2 (which is nearly all usb interfaces presented in a type C socket) will not even power the cable plugged into them without a negotiation taking place on the CC wire. But the HH5A which presents using a type A socket will power the modem without the need for the CC connection. But it's possible the modem will not accept the power (i.e. will not activate) unless there is a CC negotiation OR (either of) CC1/2 is pulled up to +5V. I think this is the purpose of the 57kohm pullup R1 on the type C plugs which I bought to construct the wire.
Photo attached. Notice the homemade right-angle typeA plug to typeC socket! I bought 3 different such adapters and they were all shit so in the end made my own.