-
Notifications
You must be signed in to change notification settings - Fork 75
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
Lunatone HID: occasional stuck communication, and assert current_command == None
in dali/driver/hid.py:592
#124
Comments
jktjkt
added a commit
to jktjkt/python-dali
that referenced
this issue
Jul 26, 2024
These were all logged as debug messages, which means that they are not shown by default. This makes any debugging of failures much harder, see, e.g., sde1000#124.
jktjkt
added a commit
to jktjkt/python-dali
that referenced
this issue
Jul 26, 2024
I was playing with some commands, and one of my devices apparently just won't send any reply to a DT5 ResetConverterSettings. That's a sendtwice=True command, and when that happens, I was getting an assertion failure later on on line 600, which looks pretty much like bug sde1000#124: 15:00:59.333780 D: tridonic: Sending with seq e7 15:00:59.339550 D: tridonic: waiting for outstanding_transmissions=1 {response=} 15:00:59.357560 D: tridonic: _handle_read 12730000C105FFFFE7 15:00:59.363037 D: tridonic: bus_watch message 12730000C105FFFFE7 15:00:59.368941 D: tridonic: Command EnableDeviceType(5), immediate 15:00:59.384012 D: tridonic: remembering device type 5 15:00:59.387287 D: tridonic: Bus watch waiting for data, no timeout 15:00:59.400013 D: tridonic: message mode=12 rtype=73 frame=b'\x00\x00\xc1\x05' interval=ffff seq=e7 15:00:59.403352 D: tridonic: waiting for outstanding_transmissions=0 {response=} 15:00:59.407774 I: dali: EnableDeviceType(5) 15:00:59.431360 D: tridonic: _handle_read 127100000000008AE7 15:00:59.454305 D: tridonic: bus_watch message 127100000000008AE7 15:00:59.457782 D: tridonic: Bus watch waiting for data, no timeout 15:00:59.461983 D: tridonic: message mode=12 rtype=71 frame=b'\x00\x00\x00\x00' interval=008a seq=e7 15:00:59.693383 D: tridonic: Sending with seq e8 15:00:59.698993 D: tridonic: waiting for outstanding_transmissions=1 {response=} 15:00:59.716567 D: tridonic: _handle_read 1273000001E6103BE8 15:00:59.721514 D: tridonic: bus_watch message 1273000001E6103BE8 15:00:59.727816 D: tridonic: Bus watch waiting with timeout 15:00:59.732960 D: tridonic: message mode=12 rtype=73 frame=b'\x00\x00\x01\xe6' interval=103b seq=e8 15:00:59.736298 D: tridonic: waiting for outstanding_transmissions=0 {response=} 15:00:59.741356 D: tridonic: _handle_read 127100000000008AE8 15:00:59.746287 D: tridonic: message mode=12 rtype=71 frame=b'\x00\x00\x00\x00' interval=008a seq=e8 15:00:59.785298 D: tridonic: bus_watch message 127100000000008AE8 15:00:59.788843 D: tridonic: Unexpected response waiting for retransmit of config command 15:00:59.794324 E: tridonic: current_command is not None: ResetConverterSettings(<address (control gear) 0>) I'm not saying that this is surely a fix for sde1000#124, but that one was happening in an environment where DT8 Tc commands were sent regularly.
sde1000
pushed a commit
that referenced
this issue
Aug 2, 2024
These were all logged as debug messages, which means that they are not shown by default. This makes any debugging of failures much harder, see, e.g., #124.
sde1000
pushed a commit
that referenced
this issue
Aug 2, 2024
I was playing with some commands, and one of my devices apparently just won't send any reply to a DT5 ResetConverterSettings. That's a sendtwice=True command, and when that happens, I was getting an assertion failure later on on line 600, which looks pretty much like bug #124: 15:00:59.333780 D: tridonic: Sending with seq e7 15:00:59.339550 D: tridonic: waiting for outstanding_transmissions=1 {response=} 15:00:59.357560 D: tridonic: _handle_read 12730000C105FFFFE7 15:00:59.363037 D: tridonic: bus_watch message 12730000C105FFFFE7 15:00:59.368941 D: tridonic: Command EnableDeviceType(5), immediate 15:00:59.384012 D: tridonic: remembering device type 5 15:00:59.387287 D: tridonic: Bus watch waiting for data, no timeout 15:00:59.400013 D: tridonic: message mode=12 rtype=73 frame=b'\x00\x00\xc1\x05' interval=ffff seq=e7 15:00:59.403352 D: tridonic: waiting for outstanding_transmissions=0 {response=} 15:00:59.407774 I: dali: EnableDeviceType(5) 15:00:59.431360 D: tridonic: _handle_read 127100000000008AE7 15:00:59.454305 D: tridonic: bus_watch message 127100000000008AE7 15:00:59.457782 D: tridonic: Bus watch waiting for data, no timeout 15:00:59.461983 D: tridonic: message mode=12 rtype=71 frame=b'\x00\x00\x00\x00' interval=008a seq=e7 15:00:59.693383 D: tridonic: Sending with seq e8 15:00:59.698993 D: tridonic: waiting for outstanding_transmissions=1 {response=} 15:00:59.716567 D: tridonic: _handle_read 1273000001E6103BE8 15:00:59.721514 D: tridonic: bus_watch message 1273000001E6103BE8 15:00:59.727816 D: tridonic: Bus watch waiting with timeout 15:00:59.732960 D: tridonic: message mode=12 rtype=73 frame=b'\x00\x00\x01\xe6' interval=103b seq=e8 15:00:59.736298 D: tridonic: waiting for outstanding_transmissions=0 {response=} 15:00:59.741356 D: tridonic: _handle_read 127100000000008AE8 15:00:59.746287 D: tridonic: message mode=12 rtype=71 frame=b'\x00\x00\x00\x00' interval=008a seq=e8 15:00:59.785298 D: tridonic: bus_watch message 127100000000008AE8 15:00:59.788843 D: tridonic: Unexpected response waiting for retransmit of config command 15:00:59.794324 E: tridonic: current_command is not None: ResetConverterSettings(<address (control gear) 0>) I'm not saying that this is surely a fix for #124, but that one was happening in an environment where DT8 Tc commands were sent regularly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Every now and then my DALI connection (with Lunatone USB module) gets stuck; sometimes it's once a few days, sometimes it's just after a few minutes. When it failed for the last time, the bus traffic right before that was the following:
I've added some async task debugging inspired by from python/cpython#91048 and some abuse of the
traceback
module, so that upon aSIGUSR1
I get a dump ofasyncio.all_tasks
and what they are waiting for. Apart from the usual, boring stuff, I saw this sequence ofawait
s:I still have no idea why that happens, but then I killed the program via Ctrl-C, and the following was printed:
Apparently, the
_bus_watch_task
is created, but neverawait
-ed. That looks like a bug, but I'm not familiar enough withasyncio
and its use from the context of the HID driver to fix this. I also do not know if this is related to my original issue with locking up. As far as I can tell, theasyncio.Event
that the_send_raw
is waiting on is never touched from the_bus_watch_task
, but perhaps there's some subtle interaction that I'm not aware of. Or, maybe, if there's an exception in this task it somehow affects the IO loop? That's probably unlikely because it's the same IO loop which handles mySIGUSR1
, and that one worked just fine and produced the trace.Does that make sense, and are these two issues perhaps related to each other?
Would you like me to get more debugging logs from the driver so that (maybe) we will know what exactly happened before that assertion was thrown? (I'll have to RTFM for logger selectivity because it's very, very verbose.)
The text was updated successfully, but these errors were encountered: