Skip to content

Can't connect to a USB spectrometer using pyseabreeze on machine with no IP #294

@tpwrules

Description

@tpwrules

On my Linux machine the following program fails if it has no IP (i.e. WiFi off, Ethernet unplugged) (it is replicatable on several machines):

import seabreeze
seabreeze.use("pyseabreeze")
import seabreeze.spectrometers

print("opening...")
spec = seabreeze.spectrometers.Spectrometer.from_first_available()

print("found serial", spec.serial_number)

print("closing...")
spec.close()

I get the following exception instead of successfully printing the serial number of my USB-attached FLAME-S:

Traceback (most recent call last):
  File "~/Desktop/test.py", line 6, in <module>
    spec = seabreeze.spectrometers.Spectrometer.from_first_available()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/hhdgnc20la4fmdiq8lwa91mc5b2fw7z7-python3-3.12.11-env/lib/python3.12/site-packages/seabreeze/spectrometers.py", line 146, in from_first_available
    for dev in list_devices():
               ^^^^^^^^^^^^^^
  File "/nix/store/hhdgnc20la4fmdiq8lwa91mc5b2fw7z7-python3-3.12.11-env/lib/python3.12/site-packages/seabreeze/spectrometers.py", line 77, in list_devices
    return api.list_devices()
           ^^^^^^^^^^^^^^^^^^
  File "/nix/store/hhdgnc20la4fmdiq8lwa91mc5b2fw7z7-python3-3.12.11-env/lib/python3.12/site-packages/seabreeze/pyseabreeze/api.py", line 137, in list_devices
    for ipv4_dev in IPv4Transport.list_devices(**self._kwargs):
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/hhdgnc20la4fmdiq8lwa91mc5b2fw7z7-python3-3.12.11-env/lib/python3.12/site-packages/seabreeze/pyseabreeze/transport.py", line 557, in list_devices
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
OSError: [Errno 19] No such device

Some network stats in this state:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp0s20f3: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions