FAQ
This page covers common questions about XenseGloveSDK installation, device connections, and data reading. Select a question to expand its answer.
Installation
What should I do if the wheel is not compatible with my platform?
Use CPython 3.9 or later and check that the package matches your operating system and CPU architecture. Windows x64, Linux x64, and Linux ARM64 require different packages. Linux also requires glibc 2.31 or later. See Installation.
Device connection and troubleshooting
What should I do if the USB scan does not find my glove?
Make sure the USB cable supports data transfer, close applications that may be using the serial port, and scan again. If the device exposes two serial ports, use the data port (CDC0). On Linux, check that your user has permission to access the serial port.
Inspect each port's detection result and any error:
from xenseglovesdk import XenseGlove
for port in XenseGlove.list_ports():
print(port.port, port.is_glove, port.error)
Detection can fail if a port is in use or a query times out. probe=False lists ports without identifying gloves.
What should I do if Windows cannot find the glove's serial port and Device Manager shows a yellow exclamation mark?
When connecting the glove for the first time, Windows may need to install the serial driver. Make sure the computer is connected to the internet and wait a moment; Windows will usually download and install the driver automatically.
If the port is still not recognized and the device shows a yellow exclamation mark in Device Manager, search for a CH340 or CH341 driver. Download the appropriate driver for your Windows system from the chip manufacturer's official website and install it manually. Then unplug and reconnect the glove and check whether the serial port appears.
Why is the glove's serial port intermittently unavailable or disappearing after connection on Linux?
On some Linux systems, the brltty service may mistake the glove's CH340 serial chip for a braille device and claim its USB interface. This can cause the serial port to be intermittently unavailable or disappear after connection. The issue is a compatibility conflict between the system service and the CH340 chip.
If brltty is confirmed to be claiming the interface, disable the service or adjust its udev rules to exclude the glove's CH340 device. If you also use a braille device, choose the udev rule adjustment. After applying the configuration, unplug and reconnect the glove, then scan for serial ports again. This will usually restore detection.
What should I do if BLE discovery or connection fails?
Check that the glove supports BLE and is powered on, enable Bluetooth on your computer, and move the glove closer. On Linux, make sure BlueZ and D-Bus services are available. The SDK uses the system's first Bluetooth adapter.
Connect using an address from a recent scan. After connecting, check the serial number with info(), then call set_channel("ble") to direct data output to BLE.
Why do pressure frame reads time out after connecting?
Make sure the output channel matches the connection: use set_channel("serial") for USB or set_channel("ble") for BLE. If you specify data_cmd, it must match the device's current output mode.
For example, within an open USB connection:
glove.set_channel("serial")
glove.set_output_mode("adc")
frame = glove.read_frame(timeout=2.0, data_cmd="adc")
If you previously called stop_stream(), call start_stream() to resume reading. If you entered configuration mode over USB, call set_config_mode(False) to resume sampling.
Why does the original connection stop receiving data after I change the output channel?
The glove sends data through one output channel at a time. For example, calling set_channel("ble") over a serial connection directs pressure data to BLE.
To change your application's connection, stop the existing read loop, close the connection, reconnect with open_ble() or open(), and select the matching output channel.
Reading and processing data
Why do repeated reads return the same sequence number and values?
read_frame() returns the latest available frame. If your application reads faster than the device updates, it can receive the same frame more than once. Use timestamp together with sequence to skip duplicates and choose a suitable polling interval. See the continuous reading example.
timeout only controls the wait when no frame is available. An existing frame may return immediately even when the device has temporarily stopped updating. Check timestamps to determine whether data is still updating.
What is the difference between None and 0 in the matrix?
None indicates a position with no valid data, while 0 is a valid ADC reading. Treat them separately in statistics and visualization. In data_bytes, invalid positions are represented by 255.
Why does selecting tare_adc not measure a new zero offset?
set_output_mode("tare_adc") selects the mode that applies the existing tare result. To measure a new zero offset, connect over USB, keep the glove unloaded, and call tare(). Wait for readings to stabilize before measuring. The tare result is not saved as permanent calibration.
Do left and right gloves require different matrix processing?
Both hands use the same 63 × 39 layout. Use info().hand to distinguish the right hand (0) from the left hand (1). None means the device did not provide this information. Apply any display mirroring in your application. See Pressure matrix.