[linux-minidisc] [PATCH] Work around hangs on NetMD music download.
This hopefully "fixes" the observed MZ-RH1 download hangs.
---
netmd/libnetmd.py | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/netmd/libnetmd.py b/netmd/libnetmd.py
index 3bcdc25..d2a3d4a 100644
--- a/netmd/libnetmd.py
+++ b/netmd/libnetmd.py
@@ -208,6 +208,20 @@ class NetMD(object):
"""
self.usb_handle.bulkWrite(BULK_WRITE_ENDPOINT, data)
+ def flushWriteBulk(self):
+ """
+ Send some dummy data to the device, with a low timeout.
+ Used to help against lockups on music download.
+ The MZ-RH1 seems to need it sometimes, while an ancient Sharp
+ unit is fine without.
+ """
+ try:
+ self.usb_handle.bulkWrite(BULK_WRITE_ENDPOINT, "\0"*128, 1)
+ except libusb1.USBError as result:
+ if result.value != libusb1.LIBUSB_ERROR_TIMEOUT:
+ raise
+
+
ACTION_PLAY = 0x75
ACTION_PAUSE = 0x7d
ACTION_FASTFORWARD = 0x39
@@ -1184,6 +1198,7 @@ class MDSession:
self.sessionkey = retailmac(ekbobject.getRootKey(), nonce)
def downloadtrack(self, trk):
+ self.md.net_md.flushWriteBulk()
self.md.setupDownload(trk.getContentID(), trk.getKEK(), self.sessionkey)
dataformat = trk.getDataFormat()
(track,uuid,ccid) = self.md.sendTrack(dataformat, diskforwire[dataformat], \
--
1.7.1