hardbyte / hardbyte/python-can

canIoCtlInit failes with canERR_PARAM (-1) on Kvaser Leaf Light v2 for Linux

Offen
#2,079 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Python
Sterne
1.6k
Forks
697
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Describe the bug
Creating a bus fails during initialization. I'm using the Kvaser backend under Linux with a Kvaser Leaf Light v2. Using the Leaf Light v2 on Windows the same function is successful

```python
import can

bus = can.Bus(
interface="kvaser",
channel=0,
bitrate=500000,
)
```

raises

```
can.interfaces.kvaser.canlib.CANLIBOperationError:
Function canIoCtl failed - Error in parameter [Error Code -1]
```

### To Reproduce
1. Attach a Kvaser Leaf Light dongle (I used the Leaf V2)
2. initialize the bus with `can.interface.Bus(interface='kvaser', channel=0, bitrate=500000)`

### Expected behavior
The bus will initialize without any errors thrown

### Additional context

OS and version: `Fedora 44`
Python version: `3.14.6`
python-can version: `4.6.1`
python-can interface/s (if applicable): Kvaser Leaf Light v2 and Kvaser Linux SDK 5.52

### Investigateion
I verified that...
- `can.detect_available_configs()` correctly discovers the device.
- `canOpenChannel()` succeeds
- the Channel can be opened directly using the CANlib bindings
- the failure occurs during the initialization of `canIoCtlInit()` calls in `KbaserBus.__init__()`

The failure occurs on `canIOCTL_SET_LOCAL_TXACK` or specifically...
```python
canIoCtlInit(
self._read_handle,
canstat.canIOCTL_SET_LOCAL_TXACK,
ctypes.byref(ctypes.c_byte(local_echo)),
1,
)
```

### Work-Around
commenting out this section of code allows me to continue initializing the bus and my program runs smoothly.

### Potentially related Issue
#2051

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start in KvaserBus.__init__ at the canIoCtlInit call for canIOCTL_SET_LOCAL_TXACK, and compare the behavior with related issue #2051 while reproducing with a Kvaser Leaf Light v2 and the provided Bus configuration. Done means the Kvaser bus initializes successfully on Linux without breaking local-TX-ack behavior; verify with a device reproduction.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend, embedded-iot
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.