no response from Kvaser after a long delay between messages
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 38/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- python
- Domínio
- embedded-iot
Direção de pesquisa
Comece reproduzindo o problema com um Kvaser Leaf Light v2 ou U100 usando a interface kvaser e, em seguida, inspecione o caminho de recebimento em torno de bus.recv() e os valores reportados de canGetBusStatistics/canReadStatus. Compare o comportamento antes e depois de 1–5 minutos de inatividade. Está concluído quando os frames ECU recebidos são recebidos após o atraso ou quando um erro claro de recebimento é reportado em vez de None.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Describe the error
When using the Kvaser interface via python-can, the CAN bus can automatically stop transmitting received frames (bus.recv() returns None) after a long period of downtime, even if:
- The CAN bus is still physically active,
- ECU responses are present on the wire (externally verified),
- "bus.send()" continues to run successfully without errors,
- Kvaser driver statistics report
status=okand no bus shutdown status.
As a result, python-can reports false “no response” timeouts, while valid responses exist on the CAN bus.
This happens without causing an exception and does not require a forced reinitialization of the bus to recover.
For playback
-
Use python-can with Kvaser leaf light v2 or Kvaser U100.
-
Open the CAN bus and connect to it in the normal mode (sending a request → receiving a response).
-
Leave the system in standby mode for a long time (about 1-5 minutes):
- The application is running,
- the tire is open,
- The Kvaser is connected,
- The control unit is connected and turned on.
- After the waiting period has expired, send a new CAN request.
Observed behavior:
bus.send()completed successfully.bus.recv(timeout)returns the valueNoneuntil the timeout expires.- Python exception is not generated.
- External monitoring confirms that ECU responses are present on the bus.
The problem occurs periodically, but can be fixed after sufficient downtime.
Expected behavior
bus.recv() must continue to return incoming CAN frames after periods of downtime until:
- the tire is open,
- The hardware is connected,
- The driver does not report a bus shutdown or a passive status with an error.
At a minimum, python-can must either:
- automatic recovery or
- returns a clear error indicating that the reception descriptor has become invalid.
Additional context
This is apparently due to ** inactivity of the Kvaser receive descriptor or internal buffering behavior** after a long downtime.
Observed characteristics:
-
Kvaser Driver Statistics Report ('canGetBusStatistics', `canReadStatus'):
status=ok
-
"Bus load=0.0%"
-
no overspending, no bus shutdown
-
However, the function
bus.recv()does not return any frames. -
Forced bus shutdown and reinitialization restore normal operation.
Operating system and version:
Windows 10 / Windows 11 (x64) (tested on both)
Python version:
Python 3.9
python-can version:
4.5.0/4.6.1 (tested on both)
python-can interface/s:
kvaser
The Python feedback function does not start.
Example of a diagnostic log collected after the timeout:
[KvaserSnap:frame_write]
statistics=std_data: 0, std_remote: 0, ext_data: 0, ext_remote: 0,
err_frame: 0, bus loading: 0.0%, overspending: 0 status=ok
Additional note:
bus.recv(timeout=0)returns the value "None" again- An external CAN analyzer confirms that the ECU responses are simultaneously present on the bus
- Linguagem predominante
- Python
- Estrelas
- 1.6k
- Forks
- 697
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de hardbyte/python-can
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
hardbyte/python-can#2103 ·
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
hardbyte/python-can#2077 · 1 comentário · 1 reação ·
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
hardbyte/python-can#1922 · 1 reação ·
-
enhancement
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 75/100
hardbyte/python-can#2104 ·
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 30/100
hardbyte/python-can#2102 ·
Todas as issues de hardbyte/python-can
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
PedestrianDynamics/pyFDS-Evac#343 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
theskumar/python-dotenv#708 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 2 dias
-
Docs Timedelta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
pandas-dev/pandas#69919 ·
Mantenedores costumam responder em até 1 dia
-
API documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
zephyrproject-rtos/west#1009 · 2 comentários ·
Mantenedores costumam responder em até 3 dias