From: Sean Cross Date: Tue, 21 May 2019 01:35:09 +0000 (+0100) Subject: remote: usb: print "access denied" error X-Git-Tag: 24jan2021_ls180~1207^2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=014c9505800c4c41bcddcd0a1352d9a959aaf2a7;p=litex.git remote: usb: print "access denied" error When we get an error with errno 13, it means that the user doesn't have access to the USB device. Rather than silently eating this error and returning -1, print out a message to aid in debugging. Signed-off-by: Sean Cross --- diff --git a/litex/tools/remote/comm_usb.py b/litex/tools/remote/comm_usb.py index 53ee4c81..302a4e4e 100644 --- a/litex/tools/remote/comm_usb.py +++ b/litex/tools/remote/comm_usb.py @@ -111,7 +111,14 @@ class CommUSB: if value is None: raise TypeError return int.from_bytes(value, byteorder="little") - except (usb.core.USBError, TypeError): + except usb.core.USBError as e: + if e.errno == 13: + print("Access Denied. Maybe try using sudo?") + self.close() + self.open() + if depth < self.MAX_RECURSION_COUNT: + return self.usb_read(addr, depth+1) + except TypeError: self.close() self.open() if depth < self.MAX_RECURSION_COUNT: @@ -127,7 +134,7 @@ class CommUSB: def usb_write(self, addr, value, depth=0): try: - self.dev.ctrl_transfer(bmRequestType=0x43, bRequest=0x00, + value = self.dev.ctrl_transfer(bmRequestType=0x43, bRequest=0x00, wValue=addr & 0xffff, wIndex=(addr >> 16) & 0xffff, data_or_wLength=bytes([(value >> 0) & 0xff, @@ -135,7 +142,9 @@ class CommUSB: (value >> 16) & 0xff, (value >> 24) & 0xff] ), timeout=None) - except usb.core.USBError: + except usb.core.USBError as e: + if e.errno == 13: + print("Access Denied. Maybe try using sudo?") self.close() self.open() if depth < self.MAX_RECURSION_COUNT: