Identified qcserial kernel module claiming 05c6:9008 before edl tool connects
Permanently blacklisted qcserial in /etc/modprobe.d/ — eliminates the race
Measured PBL Sahara HELLO window: approximately 1–2 seconds after USB enumeration
Established procedure: start edl-run first, then plug in cable
Created tools/sahara-probe utility to test connection timing
Confirmed: competing USB connections (e.g. two edl processes, or qcserial + edl) crash the PBL USB state machine — device must be power-cycled to recover
Key Findings
Correct EDL Connection Procedure
# 1. Ensure qcserial is blacklisted (one-time setup)
echo "blacklist qcserial" | sudo tee /etc/modprobe.d/no-qcserial.conf
sudo modprobe -r qcserial
# 2. Start edl tool BEFORE plugging in
edl --serial /dev/ttyUSB0 ... # or equivalent
# 3. Plug in EDL cable
# PBL sends HELLO within ~1-2 s; edl tool must already be listening
Competing connections are fatal
If two processes attempt to claim the 9008 device simultaneously, PBL’s USB state machine enters an unrecoverable state. The device becomes unresponsive on USB until power-cycled (battery drain or D+/GND reset). Always ensure only one process has the USB handle.