adafruit / Adafruit_CircuitPython_BNO08x

Helper library for the Hillcrest Laboratories BNO080 IMU
MIT License
22 stars 29 forks source link

Error during UART initialization #47

Open gislers opened 9 months ago

gislers commented 9 months ago

Hi all

I'm trying to read BNO08x data via UART on a Single Board Computer running Ubuntu 22.04. The problem is that the driver fails during initialization and I think I tracked the error down to a faulty init routine in __init__.py:

  def initialize(self) -> None:
      """Initialize the sensor"""
      for _ in range(3):
          self.hard_reset()
          self.soft_reset()
          try:
              if self._check_id():
                  break
          except BaseException as e:  # pylint:disable=bare-except
              print(e)
              time.sleep(0.5)
      else:
          raise RuntimeError("Could not read ID")

My test program is bno08x_simpletest_uart.py with some setup changes (baudrate 3000000, adjusted serial port and debug=True):

# SPDX-FileCopyrightText: 2020 Bryan Siepert, written for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
import time
import adafruit_bno08x
from adafruit_bno08x.uart import BNO08X_UART

import board  # pylint:disable=wrong-import-order
import busio  # pylint:disable=wrong-import-order

#uart = busio.UART(board.TX, board.RX, baudrate=3000000, receiver_buffer_size=2048)

# uncomment and comment out the above for use with Raspberry Pi
import serial
uart = serial.Serial("/dev/ttyS4", 3000000)

# for a USB Serial cable:
# import serial
# uart = serial.Serial("/dev/ttyUSB0", baudrate=115200)

bno = BNO08X_UART(uart, reset=None, debug=True)

bno.enable_feature(adafruit_bno08x.BNO_REPORT_ACCELEROMETER)
bno.enable_feature(adafruit_bno08x.BNO_REPORT_GYROSCOPE)
bno.enable_feature(adafruit_bno08x.BNO_REPORT_MAGNETOMETER)
bno.enable_feature(adafruit_bno08x.BNO_REPORT_ROTATION_VECTOR)

...

Now when I run the program it stops with an error Could not read ID (full debug output below). Note that I have printed out the actual exception coming from self.check_id() as it would not have been visible in the original program (in the above printed initialize method). So I found this exception to be Didn't find packet end thrown in uart.py in the _read_packet method: https://github.com/adafruit/Adafruit_CircuitPython_BNO08x/blob/cfefd9430ffd67d5b912eb1ea7bfa08a859371a8/adafruit_bno08x/uart.py#L138 What I believe happens is that the soft_reset method in uart.py is sending out a couple of packets which somehow cause the check_id method to fail. Further, when the check_id method sends out the command to read the product id, the response is read by the soft_reset in the next turn of the for loop. So the response will never be available in the check_id method. Thus, this whole init method fails. The simplest way to solve this is to comment out this line: https://github.com/adafruit/Adafruit_CircuitPython_BNO08x/blob/cfefd9430ffd67d5b912eb1ea7bfa08a859371a8/adafruit_bno08x/__init__.py#L523

The question is: What is this soft_reset good for? Is it safe to disable? Thank you for any advice.

DBG::            ********** __init__ *************
Soft resetting...DBG::           channel 0 has 272 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 272
DBG::            Channel: SHTP_COMMAND (0)
DBG::            Sequence number: 1

DBG::            Data:
DBG::           [0x04] 0x00 0x01 0x04 0x00
DBG::           [0x08] 0x00 0x00 0x00 0x80
DBG::           [0x0C] 0x06 0x31 0x2E 0x30
DBG::           [0x10] 0x2E 0x30 0x00 0x02
DBG::           [0x14] 0x02 0x00 0x01 0x03
DBG::           [0x18] 0x02 0xFF 0x7F 0x04
DBG::           [0x1C] 0x02 0x00 0x01 0x05
DBG::           [0x20] 0x02 0xFF 0x7F 0x08
DBG::           [0x24] 0x05 0x53 0x48 0x54
DBG::           [0x28] 0x50 0x00 0x06 0x01
DBG::           [0x2C] 0x00 0x09 0x08 0x63
DBG::           [0x30] 0x6F 0x6E 0x74 0x72
DBG::           [0x34] 0x6F 0x6C 0x00 0x01
DBG::           [0x38] 0x04 0x01 0x00 0x00
DBG::           [0x3C] 0x00 0x08 0x0B 0x65
DBG::           [0x40] 0x78 0x65 0x63 0x75
DBG::           [0x44] 0x74 0x61 0x62 0x6C
DBG::           [0x48] 0x65 0x00 0x06 0x01
DBG::           [0x4C] 0x01 0x09 0x07 0x64
DBG::           [0x50] 0x65 0x76 0x69 0x63
DBG::           [0x54] 0x65 0x00 0x01 0x04
DBG::           [0x58] 0x02 0x00 0x00 0x00
DBG::           [0x5C] 0x08 0x0A 0x73 0x65
DBG::           [0x60] 0x6E 0x73 0x6F 0x72
DBG::           [0x64] 0x68 0x75 0x62 0x00
DBG::           [0x68] 0x06 0x01 0x02 0x09
DBG::           [0x6C] 0x08 0x63 0x6F 0x6E
DBG::           [0x70] 0x74 0x72 0x6F 0x6C
DBG::           [0x74] 0x00 0x06 0x01 0x03
DBG::           [0x78] 0x09 0x0C 0x69 0x6E
DBG::           [0x7C] 0x70 0x75 0x74 0x4E
DBG::           [0x80] 0x6F 0x72 0x6D 0x61
DBG::           [0x84] 0x6C 0x00 0x07 0x01
DBG::           [0x88] 0x04 0x09 0x0A 0x69
DBG::           [0x8C] 0x6E 0x70 0x75 0x74
DBG::           [0x90] 0x57 0x61 0x6B 0x65
DBG::           [0x94] 0x00 0x06 0x01 0x05
DBG::           [0x98] 0x09 0x0C 0x69 0x6E
DBG::           [0x9C] 0x70 0x75 0x74 0x47
DBG::           [0xA0] 0x79 0x72 0x6F 0x52
DBG::           [0xA4] 0x76 0x00 0x80 0x06
DBG::           [0xA8] 0x31 0x2E 0x31 0x2E
DBG::           [0xAC] 0x30 0x00 0x81 0x64
DBG::           [0xB0] 0xF8 0x10 0xF5 0x04
DBG::           [0xB4] 0xF3 0x10 0xF1 0x10
DBG::           [0xB8] 0xFB 0x05 0xFA 0x05
DBG::           [0xBC] 0xFC 0x11 0xEF 0x02
DBG::           [0xC0] 0x01 0x0A 0x02 0x0A
DBG::           [0xC4] 0x03 0x0A 0x04 0x0A
DBG::           [0xC8] 0x05 0x0E 0x06 0x0A
DBG::           [0xCC] 0x07 0x10 0x08 0x0C
DBG::           [0xD0] 0x09 0x0E 0x0A 0x08
DBG::           [0xD4] 0x0B 0x08 0x0C 0x06
DBG::           [0xD8] 0x0D 0x06 0x0E 0x06
DBG::           [0xDC] 0x0F 0x10 0x10 0x05
DBG::           [0xE0] 0x11 0x0C 0x12 0x06
DBG::           [0xE4] 0x13 0x06 0x14 0x10
DBG::           [0xE8] 0x15 0x10 0x16 0x10
DBG::           [0xEC] 0x17 0x00 0x18 0x08
DBG::           [0xF0] 0x19 0x06 0x1A 0x00
DBG::           [0xF4] 0x1B 0x00 0x1C 0x06
DBG::           [0xF8] 0x1D 0x00 0x1E 0x10
DBG::           [0xFC] 0x1F 0x00 0x20 0x00
DBG::           [0x100] 0x21 0x00 0x22 0x00
DBG::           [0x104] 0x23 0x00 0x24 0x00
DBG::           [0x108] 0x25 0x00 0x26 0x00
DBG::           [0x10C] 0x27 0x00 0x28 0x0E
DBG::           [0x110] 0x29 0x0C 0x2A 0x0E
                *******************************

OK!
DBG::
********** READ ID **********
DBG::
** Sending ID Request Report **
DBG::
** Waiting for packet **
DBG::            ** Waiting for packet on channel 2  with report id 0xf8
DBG::            timeout=5.0
DBG::            channel 0 has 272 bytes available
Didn't find packet end
Soft resetting...DBG::           channel 2 has 16 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 16
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: COMMAND_RESPONSE (0xf1)
DBG::            Sequence number: 0

DBG::            Data:
DBG::           [0x04] 0xF1 0x00 0x84 0x00
DBG::           [0x08] 0x00 0x00 0x01 0x00
DBG::           [0x0C] 0x00 0x00 0x00 0x00
DBG::           [0x10] 0x00 0x00 0x00 0x00
                *******************************

DBG::            channel 1 has 1 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 1
DBG::            Channel: EXE (1)
DBG::            Sequence number: 0

DBG::            Data:
DBG::           [0x04] 0x01
                *******************************

DBG::            channel 2 has 16 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 16
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: PRODUCT_ID_RESPONSE (0xf8)
DBG::            Sequence number: 1

DBG::            Data:
DBG::           [0x04] 0xF8 0x02 0x03 0x02
DBG::           [0x08] 0xB4 0xA6 0x98 0x00
DBG::           [0x0C] 0x06 0x00 0x00 0x00
DBG::           [0x10] 0x0D 0x00 0x00 0x00
                *******************************

DBG::            channel 2 has 48 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 48
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: PRODUCT_ID_RESPONSE (0xf8)
DBG::            Sequence number: 2

DBG::            Data:
DBG::           [0x04] 0xF8 0x00 0x01 0x02
DBG::           [0x08] 0x96 0xA4 0x98 0x00
DBG::           [0x0C] 0xE6 0x00 0x00 0x00
DBG::           [0x10] 0x04 0x00 0x00 0x00
DBG::           [0x14] 0xF8 0x00 0x04 0x04
DBG::           [0x18] 0x36 0xA3 0x98 0x00
DBG::           [0x1C] 0xE5 0x01 0x00 0x00
DBG::           [0x20] 0x03 0x00 0x00 0x00
DBG::           [0x24] 0xF8 0x00 0x04 0x02
DBG::           [0x28] 0xE3 0xA2 0x98 0x00
DBG::           [0x2C] 0x24 0x02 0x00 0x00
DBG::           [0x30] 0x0A 0x00 0x00 0x00
                *******************************

DBG::            channel 0 has 272 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 272
DBG::            Channel: SHTP_COMMAND (0)
DBG::            Sequence number: 1

DBG::            Data:
DBG::           [0x04] 0x00 0x01 0x04 0x00
DBG::           [0x08] 0x00 0x00 0x00 0x80
DBG::           [0x0C] 0x06 0x31 0x2E 0x30
DBG::           [0x10] 0x2E 0x30 0x00 0x02
DBG::           [0x14] 0x02 0x00 0x01 0x03
DBG::           [0x18] 0x02 0xFF 0x7F 0x04
DBG::           [0x1C] 0x02 0x00 0x01 0x05
DBG::           [0x20] 0x02 0xFF 0x7F 0x08
DBG::           [0x24] 0x05 0x53 0x48 0x54
DBG::           [0x28] 0x50 0x00 0x06 0x01
DBG::           [0x2C] 0x00 0x09 0x08 0x63
DBG::           [0x30] 0x6F 0x6E 0x74 0x72
DBG::           [0x34] 0x6F 0x6C 0x00 0x01
DBG::           [0x38] 0x04 0x01 0x00 0x00
DBG::           [0x3C] 0x00 0x08 0x0B 0x65
DBG::           [0x40] 0x78 0x65 0x63 0x75
DBG::           [0x44] 0x74 0x61 0x62 0x6C
DBG::           [0x48] 0x65 0x00 0x06 0x01
DBG::           [0x4C] 0x01 0x09 0x07 0x64
DBG::           [0x50] 0x65 0x76 0x69 0x63
DBG::           [0x54] 0x65 0x00 0x01 0x04
DBG::           [0x58] 0x02 0x00 0x00 0x00
DBG::           [0x5C] 0x08 0x0A 0x73 0x65
DBG::           [0x60] 0x6E 0x73 0x6F 0x72
DBG::           [0x64] 0x68 0x75 0x62 0x00
DBG::           [0x68] 0x06 0x01 0x02 0x09
DBG::           [0x6C] 0x08 0x63 0x6F 0x6E
DBG::           [0x70] 0x74 0x72 0x6F 0x6C
DBG::           [0x74] 0x00 0x06 0x01 0x03
DBG::           [0x78] 0x09 0x0C 0x69 0x6E
DBG::           [0x7C] 0x70 0x75 0x74 0x4E
DBG::           [0x80] 0x6F 0x72 0x6D 0x61
DBG::           [0x84] 0x6C 0x00 0x07 0x01
DBG::           [0x88] 0x04 0x09 0x0A 0x69
DBG::           [0x8C] 0x6E 0x70 0x75 0x74
DBG::           [0x90] 0x57 0x61 0x6B 0x65
DBG::           [0x94] 0x00 0x06 0x01 0x05
DBG::           [0x98] 0x09 0x0C 0x69 0x6E
DBG::           [0x9C] 0x70 0x75 0x74 0x47
DBG::           [0xA0] 0x79 0x72 0x6F 0x52
DBG::           [0xA4] 0x76 0x00 0x80 0x06
DBG::           [0xA8] 0x31 0x2E 0x31 0x2E
DBG::           [0xAC] 0x30 0x00 0x81 0x64
DBG::           [0xB0] 0xF8 0x10 0xF5 0x04
DBG::           [0xB4] 0xF3 0x10 0xF1 0x10
DBG::           [0xB8] 0xFB 0x05 0xFA 0x05
DBG::           [0xBC] 0xFC 0x11 0xEF 0x02
DBG::           [0xC0] 0x01 0x0A 0x02 0x0A
DBG::           [0xC4] 0x03 0x0A 0x04 0x0A
DBG::           [0xC8] 0x05 0x0E 0x06 0x0A
DBG::           [0xCC] 0x07 0x10 0x08 0x0C
DBG::           [0xD0] 0x09 0x0E 0x0A 0x08
DBG::           [0xD4] 0x0B 0x08 0x0C 0x06
DBG::           [0xD8] 0x0D 0x06 0x0E 0x06
DBG::           [0xDC] 0x0F 0x10 0x10 0x05
DBG::           [0xE0] 0x11 0x0C 0x12 0x06
DBG::           [0xE4] 0x13 0x06 0x14 0x10
DBG::           [0xE8] 0x15 0x10 0x16 0x10
DBG::           [0xEC] 0x17 0x00 0x18 0x08
DBG::           [0xF0] 0x19 0x06 0x1A 0x00
DBG::           [0xF4] 0x1B 0x00 0x1C 0x06
DBG::           [0xF8] 0x1D 0x00 0x1E 0x10
DBG::           [0xFC] 0x1F 0x00 0x20 0x00
DBG::           [0x100] 0x21 0x00 0x22 0x00
DBG::           [0x104] 0x23 0x00 0x24 0x00
DBG::           [0x108] 0x25 0x00 0x26 0x00
DBG::           [0x10C] 0x27 0x00 0x28 0x0E
DBG::           [0x110] 0x29 0x0C 0x2A 0x0E
                *******************************

OK!
DBG::
********** READ ID **********
DBG::
** Sending ID Request Report **
DBG::
** Waiting for packet **
DBG::            ** Waiting for packet on channel 2  with report id 0xf8
DBG::            timeout=5.0
DBG::            channel 0 has 272 bytes available
Didn't find packet end
Soft resetting...DBG::           channel 2 has 16 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 16
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: COMMAND_RESPONSE (0xf1)
DBG::            Sequence number: 0

DBG::            Data:
DBG::           [0x04] 0xF1 0x00 0x84 0x00
DBG::           [0x08] 0x00 0x00 0x01 0x00
DBG::           [0x0C] 0x00 0x00 0x00 0x00
DBG::           [0x10] 0x00 0x00 0x00 0x00
                *******************************

DBG::            channel 1 has 1 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 1
DBG::            Channel: EXE (1)
DBG::            Sequence number: 0

DBG::            Data:
DBG::           [0x04] 0x01
                *******************************

DBG::            channel 2 has 16 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 16
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: PRODUCT_ID_RESPONSE (0xf8)
DBG::            Sequence number: 1

DBG::            Data:
DBG::           [0x04] 0xF8 0x02 0x03 0x02
DBG::           [0x08] 0xB4 0xA6 0x98 0x00
DBG::           [0x0C] 0x06 0x00 0x00 0x00
DBG::           [0x10] 0x0D 0x00 0x00 0x00
                *******************************

DBG::            channel 2 has 48 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 48
DBG::            Channel: CONTROL (2)
DBG::                   Report Type: PRODUCT_ID_RESPONSE (0xf8)
DBG::            Sequence number: 2

DBG::            Data:
DBG::           [0x04] 0xF8 0x00 0x01 0x02
DBG::           [0x08] 0x96 0xA4 0x98 0x00
DBG::           [0x0C] 0xE6 0x00 0x00 0x00
DBG::           [0x10] 0x04 0x00 0x00 0x00
DBG::           [0x14] 0xF8 0x00 0x04 0x04
DBG::           [0x18] 0x36 0xA3 0x98 0x00
DBG::           [0x1C] 0xE5 0x01 0x00 0x00
DBG::           [0x20] 0x03 0x00 0x00 0x00
DBG::           [0x24] 0xF8 0x00 0x04 0x02
DBG::           [0x28] 0xE3 0xA2 0x98 0x00
DBG::           [0x2C] 0x24 0x02 0x00 0x00
DBG::           [0x30] 0x0A 0x00 0x00 0x00
                *******************************

DBG::            channel 0 has 272 bytes available

                ********** Packet *************
DBG::            HEADER:
DBG::            Data Len: 272
DBG::            Channel: SHTP_COMMAND (0)
DBG::            Sequence number: 1

DBG::            Data:
DBG::           [0x04] 0x00 0x01 0x04 0x00
DBG::           [0x08] 0x00 0x00 0x00 0x80
DBG::           [0x0C] 0x06 0x31 0x2E 0x30
DBG::           [0x10] 0x2E 0x30 0x00 0x02
DBG::           [0x14] 0x02 0x00 0x01 0x03
DBG::           [0x18] 0x02 0xFF 0x7F 0x04
DBG::           [0x1C] 0x02 0x00 0x01 0x05
DBG::           [0x20] 0x02 0xFF 0x7F 0x08
DBG::           [0x24] 0x05 0x53 0x48 0x54
DBG::           [0x28] 0x50 0x00 0x06 0x01
DBG::           [0x2C] 0x00 0x09 0x08 0x63
DBG::           [0x30] 0x6F 0x6E 0x74 0x72
DBG::           [0x34] 0x6F 0x6C 0x00 0x01
DBG::           [0x38] 0x04 0x01 0x00 0x00
DBG::           [0x3C] 0x00 0x08 0x0B 0x65
DBG::           [0x40] 0x78 0x65 0x63 0x75
DBG::           [0x44] 0x74 0x61 0x62 0x6C
DBG::           [0x48] 0x65 0x00 0x06 0x01
DBG::           [0x4C] 0x01 0x09 0x07 0x64
DBG::           [0x50] 0x65 0x76 0x69 0x63
DBG::           [0x54] 0x65 0x00 0x01 0x04
DBG::           [0x58] 0x02 0x00 0x00 0x00
DBG::           [0x5C] 0x08 0x0A 0x73 0x65
DBG::           [0x60] 0x6E 0x73 0x6F 0x72
DBG::           [0x64] 0x68 0x75 0x62 0x00
DBG::           [0x68] 0x06 0x01 0x02 0x09
DBG::           [0x6C] 0x08 0x63 0x6F 0x6E
DBG::           [0x70] 0x74 0x72 0x6F 0x6C
DBG::           [0x74] 0x00 0x06 0x01 0x03
DBG::           [0x78] 0x09 0x0C 0x69 0x6E
DBG::           [0x7C] 0x70 0x75 0x74 0x4E
DBG::           [0x80] 0x6F 0x72 0x6D 0x61
DBG::           [0x84] 0x6C 0x00 0x07 0x01
DBG::           [0x88] 0x04 0x09 0x0A 0x69
DBG::           [0x8C] 0x6E 0x70 0x75 0x74
DBG::           [0x90] 0x57 0x61 0x6B 0x65
DBG::           [0x94] 0x00 0x06 0x01 0x05
DBG::           [0x98] 0x09 0x0C 0x69 0x6E
DBG::           [0x9C] 0x70 0x75 0x74 0x47
DBG::           [0xA0] 0x79 0x72 0x6F 0x52
DBG::           [0xA4] 0x76 0x00 0x80 0x06
DBG::           [0xA8] 0x31 0x2E 0x31 0x2E
DBG::           [0xAC] 0x30 0x00 0x81 0x64
DBG::           [0xB0] 0xF8 0x10 0xF5 0x04
DBG::           [0xB4] 0xF3 0x10 0xF1 0x10
DBG::           [0xB8] 0xFB 0x05 0xFA 0x05
DBG::           [0xBC] 0xFC 0x11 0xEF 0x02
DBG::           [0xC0] 0x01 0x0A 0x02 0x0A
DBG::           [0xC4] 0x03 0x0A 0x04 0x0A
DBG::           [0xC8] 0x05 0x0E 0x06 0x0A
DBG::           [0xCC] 0x07 0x10 0x08 0x0C
DBG::           [0xD0] 0x09 0x0E 0x0A 0x08
DBG::           [0xD4] 0x0B 0x08 0x0C 0x06
DBG::           [0xD8] 0x0D 0x06 0x0E 0x06
DBG::           [0xDC] 0x0F 0x10 0x10 0x05
DBG::           [0xE0] 0x11 0x0C 0x12 0x06
DBG::           [0xE4] 0x13 0x06 0x14 0x10
DBG::           [0xE8] 0x15 0x10 0x16 0x10
DBG::           [0xEC] 0x17 0x00 0x18 0x08
DBG::           [0xF0] 0x19 0x06 0x1A 0x00
DBG::           [0xF4] 0x1B 0x00 0x1C 0x06
DBG::           [0xF8] 0x1D 0x00 0x1E 0x10
DBG::           [0xFC] 0x1F 0x00 0x20 0x00
DBG::           [0x100] 0x21 0x00 0x22 0x00
DBG::           [0x104] 0x23 0x00 0x24 0x00
DBG::           [0x108] 0x25 0x00 0x26 0x00
DBG::           [0x10C] 0x27 0x00 0x28 0x0E
DBG::           [0x110] 0x29 0x0C 0x2A 0x0E
                *******************************

OK!
DBG::
********** READ ID **********
DBG::
** Sending ID Request Report **
DBG::
** Waiting for packet **
DBG::            ** Waiting for packet on channel 2  with report id 0xf8
DBG::            timeout=5.0
DBG::            channel 0 has 272 bytes available
Didn't find packet end
Traceback (most recent call last):
  File "/home/ubuntu/Adafruit_CircuitPython_BNO08x/bno08x_simpletest_uart.py", line 21, in <module>
    bno = BNO08X_UART(uart, reset=None, debug=True)
  File "/home/ubuntu/Adafruit_CircuitPython_BNO08x/adafruit_bno08x/uart.py", line 30, in __init__
    super().__init__(reset, debug)
  File "/home/ubuntu/Adafruit_CircuitPython_BNO08x/adafruit_bno08x/__init__.py", line 517, in __init__
    self.initialize()
  File "/home/ubuntu/Adafruit_CircuitPython_BNO08x/adafruit_bno08x/__init__.py", line 531, in initialize
    raise RuntimeError("Could not read ID")
RuntimeError: Could not read ID