Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Logic driver issue Windows #392

Open
the-lifting-engineer opened this issue Aug 25, 2021 · 4 comments
Open

Logic driver issue Windows #392

the-lifting-engineer opened this issue Aug 25, 2021 · 4 comments
Labels
needs validation described problem or solution requires further validation technical support request for technical support

Comments

@the-lifting-engineer
Copy link

Running into a driver issue when I try to run the logic command on Windows 10.

gf logic -p /tmp/spi-capture12.sr
Sampling 8 channels at 17 MHz.
Press Ctrl+C to stop reading data from device.

ERROR: Communications failure -- check the connection to -- and state of -- the GreatFET.
(More debug information may be available if you run 'gf dmesg').
[Errno None] b'libusb0-dll:err [_usb_reap_async] timeout error\n'

Capture terminated -- waiting for data processing to complete.
Sigrok/PulseView compatible session file created: '/tmp/spi-capture12.sr'.
Sampled for 3.0159 seconds.

When I run dmesg it doesn't pull any errors and when I run the gf info command it has no problem detecting the board.

I've reinstalled the drivers through Zadig but it appears to have made no difference.

@straithe straithe added the technical support request for technical support label Aug 26, 2021
@straithe straithe self-assigned this Aug 26, 2021
@straithe
Copy link
Member

Can you please run gf info -a and put the output here? I'd also appreciate if you could run gf dmesg after an error occurs and also paste that output here.

@the-lifting-engineer
Copy link
Author

gf info -a outputs: gf info -a
Host tools info:
host module version: 2021.2.1
pygreat module version: 2021.2.1
python version: 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)]

    module path: c:\users\school\appdata\local\programs\python\python39\lib\site-packages\greatfet
    command path: c:\users\school\appdata\local\programs\python\python39\lib\site-packages\greatfet\commands
    gnuradio-companion block path: c:\users\school\appdata\local\programs\python\python39\lib\site-packages\greatfet\gnuradio

Found a GreatFET One!
Board ID: 0
Firmware version: v2021.2.1
Part ID: a0000a303d4764
Serial number: 000057cc67e633455757

it also shows the supported API's (not sure if you needed these to)

gf dmesg after the error occurs: gf dmesg
[------------] System started after hard reset / power cycle.
[ 131457] System clock bringup complete.
[ 131489] Configuring board pins...
[ 131541] GreatFET initialization complete!
[ 296623274] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 476471217] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 486578009] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000

Thank you for helping me out with this.

@miek miek added the needs validation described problem or solution requires further validation label Aug 30, 2021
@pickeditmate
Copy link

I'm getting a similar error with this too. Windows 10

C:\Users\User>gf logic -p testSigrokCapture.sr
Sampling 8 channels at 17 MHz.
Press Ctrl+C to stop reading data from device.
Traceback (most recent call last):
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 236, in get_interface_and_endpoint
return self._ep_info[endpoint_address]
KeyError: 129

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Program Files\Python310\Scripts\greatfet_logic-script.py", line 33, in
sys.exit(load_entry_point('GreatFET==2021.2.1', 'console_scripts', 'greatfet_logic')())
File "C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet\commands\greatfet_logic.py", line 303, in main
device.comms.device.read(endpoint, transfer_buffer, 3000)
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 1021, in read
intf, ep = self._ctx.setup_request(self, endpoint)
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 113, in wrapper
return f(self, *args, **kwargs)
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 228, in setup_request
intf, ep = self.get_interface_and_endpoint(device, endpoint_address)
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 113, in wrapper
return f(self, *args, **kwargs)
File "C:\Users\User\AppData\Roaming\Python\Python310\site-packages\usb\core.py", line 244, in get_interface_and_endpoint
raise ValueError('Invalid endpoint address ' + hex(endpoint_address))
ValueError: Invalid endpoint address 0x81

and the output of
C:\Users\User>gf info -H
Host tools info:
host module version: 2021.2.1
pygreat module version: 2021.2.1
python version: 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)]

    module path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet
    command path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet\commands
    gnuradio-companion block path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet\gnuradio

Found a GreatFET One!
Board ID: 0
Firmware version: v2021.2.1
Part ID: a0000a306d4f6a
Serial number: 000057cc67e632725257

C:\Users\User>gf info -a
Host tools info:
host module version: 2021.2.1
pygreat module version: 2021.2.1
python version: 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)]

    module path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet
    command path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet\commands
    gnuradio-companion block path: C:\Program Files\Python310\lib\site-packages\greatfet-2021.2.1-py3.10.egg\greatfet\gnuradio

Found a GreatFET One!
Board ID: 0
Firmware version: v2021.2.1
Part ID: a0000a306d4f6a
Serial number: 000057cc67e632725257
APIs supported:
core:
get_available_classes -- Fetches the available class numbers.
get_available_verbs -- Fetches the available verb numbers for a given class.
get_class_docs -- Fetches for documentation the given class.
get_class_name -- Fetches the string name for the given class.
get_verb_descriptor -- Fetches the information about the given verb.
get_verb_documentation -- Fetches the given verb's documentation.
get_verb_in_param_names -- Fetches the given verb's in-param names.
get_verb_in_signature -- Fetches the given verb's in-signature.
get_verb_name -- Fetches the string name for the given verb.
get_verb_out_param_names -- Fetches the given verb's out-param names.
get_verb_out_signature -- Fetches the given verb's out-signature.
read_board_id -- Fetches the board's type identifier.
read_part_id -- Fetches the part ID used on the board.
read_serial_number -- Fetches the board's serial number.
read_version_string -- Fetches the board's version.
request_reset -- Resets the relevant board.
firmware:
full_erase -- Erases the entire firmware flash chip.
initialize -- Sets up the board to have its firmware programmed.
page_erase -- Erases the page with the provided address on the fw flash.
read_page -- Returns the contents of the flash page at the given address.
write_page -- Writes the provided data to a single firmware flash page.
uart:
initialize -- Prepares a UART for use by the rest of this API.
read -- Reads from the UART buffer, capturing recently received data
synchronous_transmit -- Transmits the provided byte over the given UART.
swra124:
chip_erase -- erase the chip
debug_init -- reset target into debugging mode
debug_instr -- execute instruction on target
get_chip_id -- read chip ID from target
get_pc -- get program counter from target
halt -- halt target execution
read_status -- read status byte from target
resume -- resume target execution
setup -- initialize pin mapping for debugging
step_instr -- single-step target
spi_flash:
full_erase -- Erases the entire spi_flash flash chip.
initialize -- Sets up the board to program an external SPI flash.
query_device_id -- Reads the target SPI flash's JEDEC ID.
query_topology -- Attempts to read information about the device's 'shape' usin
read_page -- Returns the contents of the flash page at the given address.
write_page -- Writes the provided data to a single spi_flash flash page.
spi:
clock_data -- Clock data out and in; but don't change the chip select.
enable_drive -- If enable is false, the SPI pins will be tri-stated; if true
init -- Initialize a SPI device
set_clock_polarity_and_phase -- Applies a standard SPI mode to set the polarity and phase.
transmit -- Write to a SPI device and read response
selftest:
measure_clock_frequencies -- Returns the frequencies of the provided clocks, in MHz.
measure_raw_clock -- Returns the frequencies of the provided clocks, in MHz.
sdir:
dac_register_read -- debug: read a raw value from an AD904 register
dac_register_write -- debug: write a raw value from an AD904 register
start_receive -- Start receipt of SDIR data on the primary bulk comms pipe.
stop -- Halt SDIR communications; termianting any active communicati
pattern_generator:
dump_sgpio_configuration -- Requests that the system dumps its SGPIO configuration state
generate_pattern -- Sets the GreatFET to repeatedly emit a short pattern.
generate_simple_pattern -- Sets the GreatFET to emit a short pattern.
stop -- Stops all pattern generation functionality.
upload_samples -- Uploads a set of samples into the pattern generator's sample
logic_analyzer:
change_first_pin -- Changes the first SGPIO pin captured in future captures, but
configure -- Configures a logic analyzer capture; should be called before
configure_alt_mappings -- Swaps the locations of pins 8/9 for use with Rhodadendron's
dump_sgpio_configuration -- Requests that the system dumps its SGPIO configuration state
start -- Starts a logic analyzer capture, which will run until stop i
stop -- Terminates an active logic analyzer capture.
loadables:
halt_m0 -- Starts execution of a loaded program on the device's M0 core
load_m0_page -- Copies a page of data into the M0 address space.
start_m0 -- Starts execution of a loaded program on the device's M0 core
leds:
off -- Turn an LED off
on -- Turn an LED on
toggle -- Toggle an LED
jtag_msp430:
erase_flash -- Erase all flash (except info segment).
erase_info -- Erase info flash segment.
halt_cpu -- Halt program execution.
read_mem -- Read n words from memory.
release_cpu -- Release control of the CPU, continuing execution.
set_instruction_fetch -- Put CPU in to instruction fetch state (probably).
set_pc -- Set CPU program counter.
set_reg -- Set a register to the given value.
start -- Start JTAG process.
stop -- Stop JTAG process.
write_flash -- Write data to flash from a given address.
write_mem -- Write a 16 bit word to memory.
jtag:
configure -- Configures a JTAG scan chain; can be run multiple times, but
run_clock -- Pulses the clock for the chain; but neither scans in nor sca
scan -- Scans a set of data out to the chain, and returns a response
scan_in -- Scans a set of data in from the chain, scanning out all fill
scan_out -- Scans a set of data out to the chain, discarding any respons
i2c:
issue_bytes -- Issues a raw set of bytes on the I2C bus. Gives low-level co
issue_start -- Issues a raw start bit onto the I2C bus.
issue_stop -- Issues a raw stop bit on the I2C bus.
read -- Reads from the I2C bus and responds accordingly
read_bytes -- Reads a raw set of bytes on the I2C bus. Should follow an is
scan -- Scans all valid I2C addresses for attached devices
start -- Initialize and transmit a start bit to an I2C device
stop -- Transmit a stop bit to an I2C device
stop_periodic_read -- Stop any active periodic read.
stream_periodic_read -- Schedule a periodic I2C transaction, and stream its results
write -- Writes to the I2C bus and responds accordingly
heartbeat:
get_period -- Returns the base period for the hearbeat LED. Arbitary units
set_period -- Sets the base period for the hearbeat LED. Arbitary units.
start -- Enables heartbeat mode, e.g. after the heartbeat has been st
stop -- Disables heartbeat mode, free'ing the LED for user use.
greatdancer:
bus_reset -- Causes the target device to handle a bus reset.
clean_up_transfer -- Cleans up any complete transfers on the given endpoint.
connect -- Sets up the target port to connect to a host.
disconnect -- Disconnects the target port from the host.
finish_nonblocking_read -- Returns the data read after a given non-blocking read.
get_nonblocking_data_length -- Returns the amount of data read after a given non-blocking r
get_status -- Reads one of the device's USB status registers.
read_setup -- Reads any pending setup packets recieved on the given endpoi
send_on_endpoint -- Sends the provided data on the given IN endpoint.
set_address -- Sets the address of the target device.
set_up_endpoints -- Sets up all of the non-control endpoints for the device.
stall_endpoint -- Stalls the endpoint with the provided address.
start_nonblocking_read -- Begins listening for data on the given OUT endpoint.
gpio:
get_pin_directions -- Reads the direction of a GPIO pin or pins given tuples of (p
read_pins -- Reads the value of a GPIO pin or pins given tuples of (port,
release_pin -- Releases a GPIO pin for use by other peripherals.
set_up_pin -- Configures a single pin to be used for GPIO.
write_pins -- Sets the value of a GPIO pin or pins, given tuples of (port,
glitchkit_usb:
configure_requests -- Configures future requests. Optional; defaults are somewhat
control_in -- Issues a control IN request as GlitchKit stimuli and capture
glitchkit:
add_trigger_events -- Adds to the active collection of events to be used to trigge
provide_target_clock -- Sets up the board to provide a clock to a target device.
set_synchronization_events -- Sets a collection of events to be used to synchronize stimul
set_trigger_events -- Sets a collection of events to be used to trigger fault inje
example:
capitalize -- Capitalizes the first N characters of the provided string.
sum_and_difference -- Computes the sum and difference of two ints.
debug:
clear_dmesg -- Fetches and clears content of the device's debug ring (log).
peek -- Reads a raw LPC4330 memory address; for debug.
poke -- Writes a raw LPC4330 memory address; for debug.
read_dmesg -- Fetches the content of the device's debug ring (log).
dac:
initialize -- Initializes the DAC driver. Should be called before anything
set_value -- Sets the DAC value.
set_voltage -- Sets the DAC value by voltage in millivolts.
clock_gen:
output_clock -- Provide the target clock on a given CLKOUT pin,
adc:
read_samples -- Initialize the specified ADC for usage, with the given param
stop_periodic_read -- Stop any active periodic read.
stream_periodic_read -- Schedule a periodic ADC read, and stream its results to the

C:\Users\User>gf dmesg
[------------] System started after hard reset / power cycle.
[ 126499] System clock bringup complete.
[ 126530] Configuring board pins...
[ 126583] GreatFET initialization complete!
[ 182057695] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 201550884] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 210392378] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 256794954] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 373056795] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 380556697] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000
[ 388804469] jtag: using half-period delay of 0 microseconds to achieve frequency of 405000

@straithe straithe removed their assignment Oct 11, 2023
@straithe
Copy link
Member

Since this issue has been opened libusb on Windows has changed quite a bit. @the-lifting-engineer can you please test your setup again and see if you are experiencing the same issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs validation described problem or solution requires further validation technical support request for technical support
Projects
None yet
Development

No branches or pull requests

4 participants