zeldin / fx3lafw

Blob-free logic analyzer firmware for FX3
75 stars 7 forks source link

MacOS : in super speed mode acquisition works only first time after reset. #2

Open cozycactus opened 4 years ago

cozycactus commented 4 years ago

Ruslans-iMac:bin ruslan$ ./sigrok-cli -l 5 -d fx2lafw --samples 100 --config samplerate=32M --channels D0 sr: [00:00.000000] log: libsigrok loglevel set to 5. sr: [00:00.000032] backend: libsigrok 0.6.0-git-b7ab9ed/4:0:0 (rt: 0.6.0-git-b7ab9ed/4:0:0). sr: [00:00.000069] backend: Libs: glib 2.66.0 (rt: 2.66.0/6600:0), libzip 1.7.3, libserialport 0.1.1/1:0:1 (rt: 0.1.1/1:0:1), libusb-1.0 1.0.23.11397, libftdi 1.5. sr: [00:00.000077] backend: Host: x86_64-apple-darwin18.7.0, little-endian. sr: [00:00.000083] backend: SCPI backends: TCP, RPC, serial, USBTMC. sr: [00:00.000087] backend: Firmware search paths: sr: [00:00.000093] resource: SIGROK_FIRMWARE_DIR environment variable not set, ignoring. sr: [00:00.000120] backend: - /Users/ruslan/.local/share/sigrok-firmware sr: [00:00.000125] backend: - /Users/ruslan/sr_macosx/share/sigrok-firmware sr: [00:00.000129] backend: - /usr/local/share/sigrok-firmware sr: [00:00.000133] backend: - /usr/share/sigrok-firmware sr: [00:00.000151] backend: Sanity-checking all drivers. sr: [00:00.000163] backend: Sanity-checking all input modules. sr: [00:00.000169] backend: Sanity-checking all output modules. sr: [00:00.000175] backend: Sanity-checking all transform modules. srd: libsigrokdecode loglevel set to 5. sr: [00:00.052031] ezusb: uploading firmware to device on 0.24 sr: [00:00.418653] resource: SIGROK_FIRMWARE_DIR environment variable not set, ignoring. sr: [00:00.418733] resource: Opened '/Users/ruslan/.local/share/sigrok-firmware/fx3lafw-cypress-fx3.fw'. sr: [00:00.418844] ezusb: Uploading firmware 'fx3lafw-cypress-fx3.fw'. sr: [00:00.428080] ezusb: Unable to send firmware to device: LIBUSB_ERROR_PIPE. sr: [00:00.428102] fx2lafw: Firmware upload failed for device 0.24 (logical). sr: [00:00.428114] hwdriver: Scan found 1 devices (fx2lafw). sr: [00:00.428202] device: fx2lafw: Opening device instance. sr: [00:00.428210] fx2lafw: Firmware upload was not needed. sr: [00:00.449184] fx2lafw: Opened device on 0.24 (logical) / usb/0-1 (physical), interface 0, firmware 1.3. sr: [00:00.449207] fx2lafw: Detected REVID=1, it's a Cypress CY7C68013A (FX2LP). sr: [00:00.450234] hwdriver: sr_config_set(): key 30000 (samplerate) sdi 0x7f8110c02990 cg NULL -> uint64 32000000 sr: [00:00.450268] hwdriver: sr_config_set(): key 50001 (limit_samples) sdi 0x7f8110c02990 cg NULL -> uint64 100 sr: [00:00.450341] session: Using thread-default main context. sr: [00:00.450347] session: Starting. sr: [00:00.450351] hwdriver: fx2lafw: Starting acquisition. sr: [00:00.450382] fx2lafw: submitting transfer: 0 sr: [00:00.450454] fx2lafw: submitting transfer: 1 sr: [00:00.450537] fx2lafw: submitting transfer: 2 sr: [00:00.450610] fx2lafw: submitting transfer: 3 sr: [00:00.450674] fx2lafw: submitting transfer: 4 sr: [00:00.450738] fx2lafw: submitting transfer: 5 sr: [00:00.450807] fx2lafw: submitting transfer: 6 sr: [00:00.450861] fx2lafw: submitting transfer: 7 sr: [00:00.450924] fx2lafw: submitting transfer: 8 sr: [00:00.450978] fx2lafw: submitting transfer: 9 sr: [00:00.451043] fx2lafw: submitting transfer: 10 sr: [00:00.451108] fx2lafw: submitting transfer: 11 sr: [00:00.451167] fx2lafw: submitting transfer: 12 sr: [00:00.451231] fx2lafw: submitting transfer: 13 sr: [00:00.451286] fx2lafw: submitting transfer: 14 sr: [00:00.451351] fx2lafw: submitting transfer: 15 sr: [00:00.451420] fx2lafw: submitting transfer: 16 sr: [00:00.451476] fx2lafw: submitting transfer: 17 sr: [00:00.451541] fx2lafw: submitting transfer: 18 sr: [00:00.451605] fx2lafw: submitting transfer: 19 sr: [00:00.451660] fx2lafw: submitting transfer: 20 sr: [00:00.451724] fx2lafw: submitting transfer: 21 sr: [00:00.451778] fx2lafw: submitting transfer: 22 sr: [00:00.451843] fx2lafw: submitting transfer: 23 sr: [00:00.451909] fx2lafw: submitting transfer: 24 sr: [00:00.451965] fx2lafw: submitting transfer: 25 sr: [00:00.452031] fx2lafw: submitting transfer: 26 sr: [00:00.452085] fx2lafw: submitting transfer: 27 sr: [00:00.452155] fx2lafw: submitting transfer: 28 sr: [00:00.452223] fx2lafw: submitting transfer: 29 sr: [00:00.452280] fx2lafw: submitting transfer: 30 sr: [00:00.452350] fx2lafw: submitting transfer: 31 sr: [00:00.452413] std: fx2lafw: Sending SR_DF_HEADER packet. sr: [00:00.452432] session: bus: Received SR_DF_HEADER packet. cli: Received SR_DF_HEADER. sr: [00:00.452472] hwdriver: sr_config_get(): key 30000 (samplerate) sdi 0x7f8110c02990 cg NULL -> uint64 32000000 sr: [00:00.452533] fx2lafw: GPIF delay = 5, clocksource = 192MHz. sr: [00:00.475925] fx2lafw: receive_transfer(): status LIBUSB_SUCCESS / LIBUSB_TRANSFER_COMPLETED received 320512 bytes. sr: [00:00.475955] session: bus: Received SR_DF_LOGIC packet (100 bytes, unitsize = 1). cli: Received SR_DF_LOGIC (100 bytes, unitsize = 1). sr: [00:00.475995] hwdriver: sr_config_get(): key 30000 (samplerate) sdi 0x7f8110c02990 cg NULL -> uint64 32000000 libsigrok 0.6.0-git-b7ab9ed Acquisition with 1/32 channels at 32 MHz D0:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 sr: [00:00.782453] std: fx2lafw: Sending SR_DF_END packet. sr: [00:00.782480] session: bus: Received SR_DF_END packet. D0:00000000 00000000 00000000 00000000 0000 cli: Received SR_DF_END. sr: [00:00.782511] usb: usb_source_finalize sr: [00:00.782542] session: Stopped. sr: [00:00.782573] hwdriver: Cleaning up all drivers. sr: [00:00.782579] fx2lafw: Closing device on 0.24 (logical) / usb/0-1 (physical) interface 0. Ruslans-iMac:bin ruslan$ ./sigrok-cli -l 5 -d fx2lafw --samples 100 --config samplerate=32M --channels D0 sr: [00:00.000000] log: libsigrok loglevel set to 5. sr: [00:00.000031] backend: libsigrok 0.6.0-git-b7ab9ed/4:0:0 (rt: 0.6.0-git-b7ab9ed/4:0:0). sr: [00:00.000069] backend: Libs: glib 2.66.0 (rt: 2.66.0/6600:0), libzip 1.7.3, libserialport 0.1.1/1:0:1 (rt: 0.1.1/1:0:1), libusb-1.0 1.0.23.11397, libftdi 1.5. sr: [00:00.000077] backend: Host: x86_64-apple-darwin18.7.0, little-endian. sr: [00:00.000083] backend: SCPI backends: TCP, RPC, serial, USBTMC. sr: [00:00.000087] backend: Firmware search paths: sr: [00:00.000093] resource: SIGROK_FIRMWARE_DIR environment variable not set, ignoring. sr: [00:00.000121] backend: - /Users/ruslan/.local/share/sigrok-firmware sr: [00:00.000126] backend: - /Users/ruslan/sr_macosx/share/sigrok-firmware sr: [00:00.000130] backend: - /usr/local/share/sigrok-firmware sr: [00:00.000134] backend: - /usr/share/sigrok-firmware sr: [00:00.000152] backend: Sanity-checking all drivers. sr: [00:00.000164] backend: Sanity-checking all input modules. sr: [00:00.000171] backend: Sanity-checking all output modules. sr: [00:00.000177] backend: Sanity-checking all transform modules. srd: libsigrokdecode loglevel set to 5. sr: [00:00.052671] ezusb: uploading firmware to device on 0.24 sr: [00:00.052743] resource: SIGROK_FIRMWARE_DIR environment variable not set, ignoring. sr: [00:00.052817] resource: Opened '/Users/ruslan/.local/share/sigrok-firmware/fx3lafw-cypress-fx3.fw'. sr: [00:00.052924] ezusb: Uploading firmware 'fx3lafw-cypress-fx3.fw'. sr: [00:00.062668] ezusb: Unable to send firmware to device: LIBUSB_ERROR_PIPE. sr: [00:00.062680] fx2lafw: Firmware upload failed for device 0.24 (logical). sr: [00:00.062698] hwdriver: Scan found 1 devices (fx2lafw). sr: [00:00.062792] device: fx2lafw: Opening device instance. sr: [00:00.062806] fx2lafw: Firmware upload was not needed. sr: [00:00.083816] fx2lafw: Opened device on 0.24 (logical) / usb/0-1 (physical), interface 0, firmware 1.3. sr: [00:00.083839] fx2lafw: Detected REVID=1, it's a Cypress CY7C68013A (FX2LP). sr: [00:00.084376] hwdriver: sr_config_set(): key 30000 (samplerate) sdi 0x7fdc4de01280 cg NULL -> uint64 32000000 sr: [00:00.084409] hwdriver: sr_config_set(): key 50001 (limit_samples) sdi 0x7fdc4de01280 cg NULL -> uint64 100 sr: [00:00.084486] session: Using thread-default main context. sr: [00:00.084492] session: Starting. sr: [00:00.084496] hwdriver: fx2lafw: Starting acquisition. sr: [00:00.084527] fx2lafw: submitting transfer: 0 sr: [00:00.084678] fx2lafw: submitting transfer: 1 sr: [00:00.084738] fx2lafw: submitting transfer: 2 sr: [00:00.084804] fx2lafw: submitting transfer: 3 sr: [00:00.084868] fx2lafw: submitting transfer: 4 sr: [00:00.084922] fx2lafw: submitting transfer: 5 sr: [00:00.084984] fx2lafw: submitting transfer: 6 sr: [00:00.085049] fx2lafw: submitting transfer: 7 sr: [00:00.085120] fx2lafw: submitting transfer: 8 sr: [00:00.085183] fx2lafw: submitting transfer: 9 sr: [00:00.085235] fx2lafw: submitting transfer: 10 sr: [00:00.085298] fx2lafw: submitting transfer: 11 sr: [00:00.085362] fx2lafw: submitting transfer: 12 sr: [00:00.085417] fx2lafw: submitting transfer: 13 sr: [00:00.085498] fx2lafw: submitting transfer: 14 sr: [00:00.085553] fx2lafw: submitting transfer: 15 sr: [00:00.085615] fx2lafw: submitting transfer: 16 sr: [00:00.085683] fx2lafw: submitting transfer: 17 sr: [00:00.085737] fx2lafw: submitting transfer: 18 sr: [00:00.085798] fx2lafw: submitting transfer: 19 sr: [00:00.085850] fx2lafw: submitting transfer: 20 sr: [00:00.085912] fx2lafw: submitting transfer: 21 sr: [00:00.085993] fx2lafw: submitting transfer: 22 sr: [00:00.086057] fx2lafw: submitting transfer: 23 sr: [00:00.086160] fx2lafw: submitting transfer: 24 sr: [00:00.086228] fx2lafw: submitting transfer: 25 sr: [00:00.086284] fx2lafw: submitting transfer: 26 sr: [00:00.086349] fx2lafw: submitting transfer: 27 sr: [00:00.086407] fx2lafw: submitting transfer: 28 sr: [00:00.086473] fx2lafw: submitting transfer: 29 sr: [00:00.086539] fx2lafw: submitting transfer: 30 sr: [00:00.086595] fx2lafw: submitting transfer: 31 sr: [00:00.086657] std: fx2lafw: Sending SR_DF_HEADER packet. sr: [00:00.086675] session: bus: Received SR_DF_HEADER packet. cli: Received SR_DF_HEADER. sr: [00:00.086714] hwdriver: sr_config_get(): key 30000 (samplerate) sdi 0x7fdc4de01280 cg NULL -> uint64 32000000 sr: [00:00.086781] fx2lafw: GPIF delay = 5, clocksource = 192MHz. sr: [00:00.107851] fx2lafw: receive_transfer(): status LIBUSB_TRANSFER_ERROR received 0 bytes. sr: [00:00.107939] fx2lafw: resubmit_transfer: LIBUSB_ERROR_PIPE

zeldin commented 4 years ago

I have no way to reproduce this; my Mac is not supported by MacOS newer than 10.5, and doesn't have USB3 anyway. :smile:

cozycactus commented 2 years ago

Changing num_transfers to 1 fixes this issue :) https://github.com/zeldin/libsigrok/blob/b7ab9ed40f85f1e1ef55c938d73fef0ef6ff72eb/src/hardware/fx2lafw/protocol.c#L670

zeldin commented 2 years ago

That leaves you with 0 host side buffering during descriptor change though, so hardly a good solution. I wonder if there is some kind of bug in libusb causing this? I take it that num_transfers == 2 (which would be way better than 1) won't work either?

cozycactus commented 2 years ago

works only with num_transfers == 1 :( and then long transfers are regularly timed out...

tibbon commented 1 year ago

I'm encountering this on Ventura 13.2.1 (22D68)