resp = self._hid_xfer(bytes([self.PWM_GET_DUTY_U16, pin.id]), True)
         if resp[1] != self.RESP_OK:
             raise RuntimeError("PWM get duty cycle error.")
         return int.from_bytes(resp[3 : 3 + 4], byteorder="little")
 
     def pwm_set_duty_cycle(self, pin, duty_cycle):
         resp = self._hid_xfer(bytes([self.PWM_GET_DUTY_U16, pin.id]), True)
         if resp[1] != self.RESP_OK:
             raise RuntimeError("PWM get duty cycle error.")
         return int.from_bytes(resp[3 : 3 + 4], byteorder="little")
 
     def pwm_set_duty_cycle(self, pin, duty_cycle):