When trying to run this with any MIDI, it stops with this error after a few seconds. It works fine for the first few seconds. Below is the log with -d 4
./steam-haptics-singer -d 4 stillalive_sc26_dv.mid
Steam Haptics Singer by Crazy, Steam Controller Singer by Pila
[timestamp] [threadID] facility level [function call] <message>
--------------------------------------------------------------------------------
[ 0.007986] [00007ebc] libusb: debug [libusb_get_device_list]
[ 0.007995] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.007999] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008002] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008005] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008008] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008011] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008014] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008017] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008020] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008023] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008026] [00007ebc] libusb: debug [libusb_get_device_list]
[ 0.008030] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008033] [00007ebc] libusb: debug [libusb_get_device_descriptor]
[ 0.008035] [00007ebc] libusb: debug [libusb_open] open 3.5
[ 0.008055] [00007ebc] libusb: debug [usbi_add_event_source] add fd 7 events 4
Found wired Steam Controller (2015)
[ 0.008064] [00007ebc] libusb: debug [libusb_claim_interface] interface 2
Found "dv" in file name, assuming direct velocity to gain control
Starting playback of stillalive_sc26_dv.mid... press Ctrl+C anytime to stop
[ 2.081159] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.081171] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.081186] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.081189] [00007ebc] libusb: debug [handle_events] event sources modified, reallocating event data
[ 2.081192] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.082039] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.082045] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.082050] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.082053] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.082055] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.082058] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.082061] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.082064] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.082066] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.082072] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.082075] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.084036] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.084043] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.084046] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.084049] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.084052] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.084055] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.084058] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.335512] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.335526] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.335542] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.335546] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.336051] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.336057] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.336061] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.336065] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.336069] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.336072] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.336076] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.336080] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.336082] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.336091] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.336093] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.338044] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.338047] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.338049] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.338053] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.338056] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.338058] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.338062] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.589516] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.589529] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.589544] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.589547] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.590052] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.590061] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.590066] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.590068] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.590072] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.590080] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.590084] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.590089] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.590091] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.590099] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.590102] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.592057] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.592066] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.592070] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.592073] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.592077] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.592080] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.592085] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.833522] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.833536] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.833552] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.833556] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.834053] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.834059] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.834062] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.834066] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.834072] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.834076] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.834079] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 2.834083] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 2.834085] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 2.834093] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 2.834096] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 2.836051] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 2.836058] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 2.836062] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 2.836065] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 2.836069] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 2.836072] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 2.836077] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 3.087600] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 3.087613] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 3.087629] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 3.087632] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 3.088067] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 3.088071] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 3.088075] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 3.088078] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 3.088081] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 3.088084] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 3.088086] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 3.088089] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 3.088093] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 3.088100] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 3.088103] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 3.090062] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 3.090070] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 3.090073] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 3.090076] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 3.090080] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 3.090082] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 3.090085] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 3.331530] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 3.331544] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 3.331560] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 3.331563] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 3.332074] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 3.332083] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 3.332088] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 3.332091] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 3.332096] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 3.332100] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 3.332104] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 5.836932] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 5.836944] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 5.836960] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 5.836964] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 5.838118] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 5.838128] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 5.838135] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 5.838139] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 5.838153] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 5.838156] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 5.838160] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 5.838164] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 5.838167] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 5.838174] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 5.838177] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 5.840110] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 5.840119] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 5.840126] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 5.840129] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 5.840141] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 5.840153] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 5.840157] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 6.081690] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 6.081704] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 6.081722] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 6.081725] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 6.083067] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 6.083072] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 6.083074] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 6.083077] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 6.083080] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 6.083084] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 6.083086] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 6.083089] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 6.083091] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 6.083097] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 6.083099] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 6.086069] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 6.086074] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=64
[ 6.086076] [00007ebc] libusb: debug [handle_control_completion] handling completion status 0
[ 6.086077] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 6.086080] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 6.086086] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=64
[ 6.086088] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
[ 6.337634] [00007ebc] libusb: debug [libusb_submit_transfer] transfer 0x5628f08ef1b0
[ 6.337644] [00007ebc] libusb: debug [add_to_flying_list] arm timer for timeout in 1000ms (first in line)
[ 6.337658] [00007ebc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 6.337661] [00007ebc] libusb: debug [usbi_wait_for_events] poll() 3 fds with timeout in 60000ms
[ 7.214108] [00007ebc] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 7.343128] [00007ebc] libusb: debug [reap_for_handle] urb type=2 status=-71 transferred=0
[ 7.343153] [00007ebc] libusb: debug [handle_control_completion] handling completion status -71
[ 7.343156] [00007ebc] libusb: debug [handle_control_completion] low-level bus error -71
[ 7.343159] [00007ebc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[ 7.343162] [00007ebc] libusb: debug [usbi_handle_transfer_completion] transfer 0x5628f08ef1b0 has callback 0x7fd99574c280
[ 7.343165] [00007ebc] libusb: debug [sync_transfer_cb] actual_length=0
[ 7.343170] [00007ebc] libusb: debug [libusb_free_transfer] transfer 0x5628f08ef1b0
Command Error LIBUSB_ERROR_IO
When trying to run this with any MIDI, it stops with this error after a few seconds. It works fine for the first few seconds. Below is the log with -d 4
This is with a 2015 Steam Controller plugged in, on Fedora 44 KDE