You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Writes to the control CDC ACM interface hang indefinitely on my Bitaxe Gamma running current bitaxe-raw main. Writes to the ASIC UART CDC ACM on the same device work correctly. The two USB endpoints behave completely differently despite identical task structure in the firmware.
Flashed with cargo espflash flash --release --chip esp32s3
Host: Windows 11 → WSL2 Ubuntu → usbipd-win 5.3.0 forwarding the Bitaxe into WSL
Note: I have not yet tested against a native Linux host without usbipd, so it's possible this is a usbipd-side interaction rather than a bitaxe-raw bug. Flagging that up front.
What works
USB enumeration: lsusb -v -d c0de:cafe shows manufacturer OSMU, product Bitaxe, both CDC ACM interfaces (1-1:1.0 at ttyACM0 for control class, 1-1:1.2 at ttyACM1 for ASIC UART class, verified via /sys/class/tty/)
Data port drains fine: writing 4096 bytes to /dev/ttyACM1 completes in ~340 ms
What doesn't work
Writing any bytes to /dev/ttyACM0 (the control interface) hangs. 4096-byte write returns Write timeout after 2 s. 6-byte GPIO frame also hangs.
Behavior is identical whether:
Using Mujina (Rust, tokio-serial)
Using pyserial with dtr=True, rts=True explicitly set
Using raw echo -en '\x06\x00\x00\x00\x06\x00' > /dev/ttyACM0 from bash
Response direction was never tested because the write never completes.
Reproducer
importserial, times=serial.Serial("/dev/ttyACM0", 115200, timeout=0.5, write_timeout=2.0)
s.dtr=True; s.rts=Truetry:
s.write(bytes([0x55] *4096))
s.flush()
print("drained")
exceptserial.SerialTimeoutException:
print("hang — control endpoint not being read by firmware")
Summary
Writes to the control CDC ACM interface hang indefinitely on my Bitaxe Gamma running current bitaxe-raw main. Writes to the ASIC UART CDC ACM on the same device work correctly. The two USB endpoints behave completely differently despite identical task structure in the firmware.
Environment
4c792b82109916f(PR Update esp-hal and flashing instructions #8 esp-hal-update, HEAD of main)cargo espflash flash --release --chip esp32s3Note: I have not yet tested against a native Linux host without usbipd, so it's possible this is a usbipd-side interaction rather than a bitaxe-raw bug. Flagging that up front.
What works
lsusb -v -d c0de:cafeshows manufacturerOSMU, productBitaxe, both CDC ACM interfaces (1-1:1.0at ttyACM0 for control class,1-1:1.2at ttyACM1 for ASIC UART class, verified via/sys/class/tty/)/dev/ttyACM1completes in ~340 msWhat doesn't work
/dev/ttyACM0(the control interface) hangs. 4096-byte write returnsWrite timeoutafter 2 s. 6-byte GPIO frame also hangs.dtr=True, rts=Trueexplicitly setecho -en '\x06\x00\x00\x00\x06\x00' > /dev/ttyACM0from bashResponse direction was never tested because the write never completes.
Reproducer