Bug triggered with:
lf read -s 50000
hw ping
ReadLF_realtime() in lfsampling.c never knew how many samples the client wanted — for the realtime path, lf_sample_payload_t.samples was never populated on the client side, and the ARM handler in appmain.c (CMD_LF_ACQ_RAW_ADC/CMD_LF_SNIFF_RAW_ADC) ignored it anyway. So the device just streamed samples indefinitely, only checking for a stop request roughly once per 64-sample USB burst, and even after noticing it, flushed one more trailing partial burst via async_usb_write_stop().
Meanwhile the client (WaitForRawDataTimeout in comms.c) stops listening in raw mode the instant it has collected exactly the number of bytes it asked for (e.g. 50000), then switches back to normal framed-packet parsing. Since the device kept sending more bytes past that point, those extra bytes sat unread in the pipe and got misinterpreted as a PacketResponseNGPreamble/OLD-frame header, corrupting every subsequent USB exchange (hw ping, etc.) — reproducible even with a plain lf read -s 50000, no trigger/COTAG needed.
Moreover, we make sure the client doesn't stop listening, even briefly, during stream reception.
Tweaked README.md to reflect the updated iCopy-X situation.
Devices running the Open Source firmware are 100% compatible with latest iceman firmware / no DRM / etc.
Signed-off-by: quantum-x <simon.yorkston@gmail.com>
Added BLE support to serial port handling for Unix systems, including connection and data transmission methods.
Signed-off-by: Niel Nielsen <nieldk@gmail.com>
Battery SoC......... 54 %
Battery voltage..... 3919 mV
Battery current..... -72 mA (discharging)
Remaining capacity.. 255 mAh
Battery drain....... 72 mA (approx 3 h 32 min left) ← new
Temp (gauge)........ 54.5 C
Full charge cap..... 480 mAh (design 500)
Battery health...... 96 % (needs a full cycle to be accurate)
Signed-off-by: Niel Nielsen <nieldk@gmail.com>
The launcher script tools/ePassport/ePassport and the package directory tools/ePassport/epassport/ differ only in case, so on case-insensitive filesystems (Windows) they occupy the same path and a fresh clone reports the tracked script as deleted. Rename the launcher to ePassport.py and update the Makefile run target, the README, and the python3 -m epassport shim docstring.