Post Go back to editing

failed to read firmware from eeprom

I am using the AD96 TOF board with Dragonboard 410c, I have connected a display and mouse+keyboard to the dragon board. I see the error Failed to read frirmware from eeprom in the terminal when I try to run the aditof-demo.sh

I have updated the sdk on the sd card following the build instructions here https://github.com/analogdevicesinc/aditof_sdk/blob/master/doc/dragonboard410c/build_instructions.md

Although I was able to run the aditof-demo.sh initially on the dragonboard, I then attempted to connect the dragon board over USB to PC and run the aditof-demo on a linux PC where the eeprom firmware error first showed up, Reverting to the dragon board setup I see the same issue while trying to run the aditof-demo on the dragonboard now. 

Please help me with any leads on how I can identify what is missing at my end which could be creating this issue?, I have tried running the eeprom tool which returns segmentation fault.

  

Parents
  • Can you try to read the contents of the eeprom using the eeprom tool?

    Firstly, make sure you build the tool by using the flag '-DWITH_TOOLS=1'. Ex: ''cmake -DDRAGONBOARD=1 -DWITH_TOOLS=1 ..'

    After building the project run the tool like this:

    ./eeprom-tool -m -r backup.bin

    If this runs ok please attach the bin here, else post here the output / error

  • Thanks for the suggestion.

    I did run it and it worked after adding sudo to the command, I see the below  messages,

    linaro@linaro-alip:~/workspace/github/aditof_sdk/build/tools/eeprom-tool$ sudo ./eeprom-tool -m -r backup.bin
    WARNING: Logging before InitGoogleLogging() is written to STDERR
    I0125 07:21:59.512212 4369 eeprom_tool.cpp:85] Setting connection via ON_TARGET
    I0125 07:21:59.512920 4369 sensor_enumerator_dragonboard.cpp:156] Looking for sensors on the target
    I0125 07:21:59.513767 4369 sensor_enumerator_dragonboard.cpp:176] Looking at: /dev/media1 for an eligible TOF camera
    I0125 07:21:59.619187 4369 sensor_enumerator_dragonboard.cpp:190] Considering: /dev/media1 an eligible TOF camera
    I0125 07:21:59.619457 4369 sensor_enumerator_dragonboard.cpp:176] Looking at: /dev/media0 for an eligible TOF camera
    I0125 07:21:59.650869 4369 addi9036_sensor.cpp:139] Opening device
    I0125 07:21:59.651070 4369 addi9036_sensor.cpp:157] Looking for the following cards:
    I0125 07:21:59.651150 4369 addi9036_sensor.cpp:159] Qualcomm Camera Subsystem
    I0125 07:21:59.682018 4369 eeprom_tool.cpp:147] Successfully created connection to EEPROM
    I0125 07:22:00.501250 4369 cam96tof1_eeprom.cpp:59] EEPROM calibration data size 64940 bytes
    E0125 07:22:06.512076 4369 cam96tof1_eeprom.cpp:74] Successfully read data from EEPROM
    I0125 07:22:06.514055 4369 eeprom_tool.cpp:242] Successfully wrote data to file
    I0125 07:22:06.514230 4369 eeprom_tool.cpp:207] Successfully wrote data to file from EEPROM
    I0125 07:22:06.514389 4369 eeprom_tool.cpp:251] Destroyed connection

    Attaching the bin file.

  • Thanks, I will rewrite the EEPROM to see if the issue goes away.

    Could you confirm, the eeprom tool usage to write to eeprom from a file?

    ./eeprom-tool -m -w <path to file>  will do?

  • Hi,

    That command will do.

    Please let us know the results.

  • Thanks for the help, Iam able to run aditof-demo now on the dragonboard after writing the new bin file to eeprom. The firmware error does not appear now.

  • Hi ,

    I still cant get the aditof-demo running on my linux pc, below are the messages I seem, any leads on what could be the issue here?


    santosh@santosh-Latitude-E7450:~/Documents/ccd_tof/aditof_sdk/build/examples/aditof-demo$ sudo ./aditof-demo
    [sudo] password for santosh:
    I0127 15:36:30.424474 3628 system_impl.cpp:91] Could not create TargetSensorEnumerator because SDK is not running on target.
    I0127 15:36:30.424830 3628 usb_sensor_enumerator.cpp:85] Looking for USB connected sensors
    I0127 15:36:30.615962 3628 camera_96tof1.cpp:144] Initializing camera
    I0127 15:36:30.616041 3628 usb_depth_sensor_linux.cpp:112] Opening device
    W0127 15:36:30.616326 3628 usb_linux_utils.cpp:128] Error in reading data from device, error: 2(No such file or directory)
    W0127 15:36:30.616715 3628 usb_storage_linux.cpp:119] Failed to read a packet via UVC extension unit. Error: -1
    W0127 15:36:31.126885 3628 usb_linux_utils.cpp:128] Error in reading data from device, error: 110(Connection timed out)
    W0127 15:36:31.127058 3628 usb_linux_utils.cpp:170] Failed to read a packet via UVC extension unit
    W0127 15:36:31.127156 3628 usb_storage_linux.cpp:82] Failed to read buffer through UVC extension unit. Error: -1
    I0127 15:36:31.127203 3628 calibration_96tof1.cpp:164] EEPROM calibration data size 100 bytes
    I0127 15:36:31.798282 3628 camera_96tof1.cpp:200] Camera initialized
    W0127 15:36:31.798384 3628 calibration_96tof1.cpp:346] No intrinsics found in the device memory for key 6.000000
    I0127 15:36:31.917218 3628 camera_96tof1.cpp:231] Chosen mode: near
    I0127 15:36:31.917268 3628 camera_96tof1.cpp:273] Camera range for mode: near is: 250 mm and 800 mm
    W0127 15:36:31.917291 3628 camera_96tof1.cpp:280] Failed to read firmware from eeprom

  • The USB communication seems unstable. Are you using a direct USB cable between PC and Dragonboard? or is there an USB hub in-between?

  • I checked the dmseg messages, I see this one appear when I try to run the application

    [ 6366.713132] uvcvideo: Failed to query (GET_CUR) UVC control 5 on unit 3: -110 (exp. 60).

    Is it an issue with linux ?, I am on ubuntu 20.04 LTS

  • 110 is the error code for timeout. Can you try to reboot both the board and your PC?

    Also, is you aditof_sdk on the PC up-to-date? (latest from master)?

  • Yes I have updated and rebuilt the applications, the timeout issue has gone after reboot, but I see this,

    santosh@santosh-Latitude-E7450:~/Documents/ccd_tof/aditof_sdk/build/examples/aditof-demo$ sudo ./aditof-demo
    I0127 17:11:36.339990  2296 system_impl.cpp:91] Could not create TargetSensorEnumerator because SDK is not running on target.
    I0127 17:11:36.340368  2296 usb_sensor_enumerator.cpp:85] Looking for USB connected sensors
    W0127 17:11:36.529641  2296 camera_96tof1.cpp:91] Could not find 24c1024 while looking for storage for camera AD-96TOF1-EBZ
    I0127 17:11:36.530390  2296 camera_96tof1.cpp:144] Initializing camera
    W0127 17:11:36.530436  2296 camera_96tof1.cpp:147] Failed to initialize! Not all sensors are available
    W0127 17:11:36.530635  2296 usb_depth_sensor_linux.cpp:205] Failed to set Pixel Format, error: 25(Inappropriate ioctl for device)
    W0127 17:11:36.530699  2296 camera_96tof1.cpp:371] Failed to set frame type
    I0127 17:11:36.646940  2296 camera_96tof1.cpp:231] Chosen mode: near
    I0127 17:11:36.646993  2296 camera_96tof1.cpp:273] Camera range for mode: near is: 250 mm and 800 mm
    W0127 17:11:36.647015  2296 camera_96tof1.cpp:280] Failed to read firmware from eeprom

  • I haven't seen this before. If you start the demo 2-3 times, will the same error be displayed? (I'm trying to figure out if USB communication is unstable or it's something else this time)

Reply Children
  • Yes, its consistently the same message, I tried to run the first-frame application,

    santosh@santosh-Latitude-E7450:~/Documents/ccd_tof/aditof_sdk/build/examples/first-frame$ sudo ./first-frame
    I0127 17:38:33.994421  3416 system_impl.cpp:91] Could not create TargetSensorEnumerator because SDK is not running on target.
    I0127 17:38:33.994776  3416 usb_sensor_enumerator.cpp:85] Looking for USB connected sensors
    W0127 17:38:34.181596  3416 camera_96tof1.cpp:91] Could not find 24c1024 while looking for storage for camera AD-96TOF1-EBZ
    I0127 17:38:34.182359  3416 camera_96tof1.cpp:144] Initializing camera
    W0127 17:38:34.182406  3416 camera_96tof1.cpp:147] Failed to initialize! Not all sensors are available
    E0127 17:38:34.182466  3416 main.cpp:59] Could not initialize camera!

    Any idea what this could mean "Could not find 24c1024 while looking for storage for camera AD-96TOF1-EBZ" ?

  • Yes, the 24c1024 is the name of the driver for the EEPROM of the AD-96TOF1-EBZ. It should be found on Dragonboard at path: /sys/bus/i2c/devices/0-0056.

    There's another application, called uvc-gadget that is reponsible for the USB communication between the AD-96TOF1-EBZ and a PC. The uvc-gadget should send the name "24c1024" to the PC in order to let it know that the EEPROM with this name is available.

    Can you run the demo directly on board? Does it work?

  • Yes the demo runs well directly on the dragonboard.
    I checked the path you have mentioned, the following is what I see,

    linaro@linaro-alip:/sys/bus/i2c/devices/0-0056$ ls
    0-00560 driver eeprom modalias name of_node power subsystem uevent

  • Is there a way to check the uvc-gadget application?

    Also is this message expected Could not create TargetSensorEnumerator because SDK is not running on target ?

  • Yes, that message is expected, it's just an informative message (not a warning or error).

    I will add some more debug messages to the uvc-gadget and get back to you with some steps to run it manually.

  • Could you also add this line of code:

    LOG(INFO) << advertisedSensorData;

    right after this line:

    https://github.com/analogdevicesinc/aditof_sdk/blob/master/sdk/src/connections/usb/linux/usb_sensor_enumerator.cpp#L164

    and rebuild and re-run?

  • I did this, added this line to line number 165, the following message got printed on running the demo,

    santosh@santosh-Latitude-E7450:~/Documents/ccd_tof/aditof_sdk/build/examples/aditof-demo$ sudo ./aditof-demo
    I0128 11:31:51.989786  2562 system_impl.cpp:91] Could not create TargetSensorEnumerator because SDK is not running on target.
    I0128 11:31:51.990159  2562 usb_sensor_enumerator.cpp:85] Looking for USB connected sensors
    I0128 11:31:52.106590  2562 usb_sensor_enumerator.cpp:165] TEMP_SENSOR_NAME=AfeTemperature;TEMP_SENSOR_ID=0;TEMP_SENSOR_NAME=LaserTemperature;TEMP_SENSOR_ID=1;
    W0128 11:31:52.177353  2562 camera_96tof1.cpp:91] Could not find 24c1024 while looking for storage for camera AD-96TOF1-EBZ
    I0128 11:31:52.178059  2562 camera_96tof1.cpp:144] Initializing camera
    W0128 11:31:52.178105  2562 camera_96tof1.cpp:147] Failed to initialize! Not all sensors are available
    W0128 11:31:52.178287  2562 usb_depth_sensor_linux.cpp:205] Failed to set Pixel Format, error: 25(Inappropriate ioctl for device)
    W0128 11:31:52.178347  2562 camera_96tof1.cpp:371] Failed to set frame type
    I0128 11:31:52.297472  2562 camera_96tof1.cpp:231] Chosen mode: near
    I0128 11:31:52.297523  2562 camera_96tof1.cpp:273] Camera range for mode: near is: 250 mm and 800 mm
    W0128 11:31:52.297546  2562 camera_96tof1.cpp:280] Failed to read firmware from eeprom

  • On line 165, the expected string should have been:

    STORAGE_NAME=24c1024;STORAGE_ID=0;TEMP_SENSOR_NAME=AfeTemperature;TEMP_SENSOR_ID=0;TEMP_SENSOR_NAME=LaserTemperature;TEMP_SENSOR_ID=1;

    The information about storage is missing in your case and I'm not sure why. It's worth to check if uvc-gadget is sending the entire information.

    I've added some more logging to uvc-gadget so could you please go to the Dragonboard, get the latest master, rebuild then go to aditof_sdk/build/apps/uvc-app/

    Then, run:

    ./config_pipe.sh

    This should start the uvc-gadget. Then, please attach here a file with the entire log.

    Thanks!

  • I rebuilt and the uvc-gadget on the dragonboard with the updated db, the log shows it is finding the eeprom storage.

    linaro@linaro-alip:~/workspace/github/aditof_sdk/build/apps/uvc-app$ ./config_pipe.sh
    Opening media device /dev/media1
    Enumerating entities
    looking up device: 81:4
    looking up device: 81:5
    looking up device: 81:6
    looking up device: 81:7
    looking up device: 81:8
    looking up device: 81:9
    looking up device: 81:10
    looking up device: 81:0
    looking up device: 81:11
    looking up device: 81:1
    looking up device: 81:12
    looking up device: 81:2
    looking up device: 81:13
    looking up device: 81:3
    looking up device: 81:14
    Found 15 entities
    Enumerating pads and links
    Setting up link 4:1 -> 7:0 [1]
    Opening media device /dev/media1
    Setting up link 7:1 -> 13:0 [1]
    Opening media device /dev/media1
    Setting up link 13:1 -> 19:0 [1]
    Opening media device /dev/media1
    Opening media device /dev/media1
    Enumerating entities
    looking up device: 81:4
    looking up device: 81:5
    looking up device: 81:6
    looking up device: 81:7
    looking up device: 81:8
    looking up device: 81:9
    looking up device: 81:10
    looking up device: 81:0
    looking up device: 81:11
    looking up device: 81:1
    looking up device: 81:12
    looking up device: 81:2
    looking up device: 81:13
    looking up device: 81:3
    looking up device: 81:14
    Found 15 entities
    Enumerating pads and links
    Setting up format SBGGR12_1X12 640x960 on pad addi903x 1-0064/0
    Format set: SBGGR12_1X12 640x960
    Setting up format SBGGR12_1X12 640x960 on pad msm_csiphy1/0
    Format set: SBGGR12_1X12 640x960
    Setting up format SBGGR12_1X12 640x960 on pad msm_csid0/0
    Format set: SBGGR12_1X12 640x960
    Setting up format SBGGR12_1X12 640x960 on pad msm_ispif0/0
    Format set: SBGGR12_1X12 640x960
    Setting up format SBGGR12_1X12 640x960 on pad msm_vfe0_rdi0/0
    Format set: SBGGR12_1X12 640x960
    I0128 08:36:30.690810 4831 uvc-gadget.cpp:2001] ./uvc-gadget has started
    I0128 08:36:30.698033 4831 uvc-gadget.cpp:2029] This UVC instance is using aditof sdk version: 2.0.0
    I0128 08:36:30.698231 4831 sensor_enumerator_dragonboard.cpp:156] Looking for sensors on the target
    I0128 08:36:30.698694 4831 sensor_enumerator_dragonboard.cpp:176] Looking at: /dev/media1 for an eligible TOF camera
    I0128 08:36:30.775835 4831 sensor_enumerator_dragonboard.cpp:190] Considering: /dev/media1 an eligible TOF camera
    I0128 08:36:30.776178 4831 sensor_enumerator_dragonboard.cpp:176] Looking at: /dev/media0 for an eligible TOF camera
    I0128 08:36:30.812418 4831 uvc-gadget.cpp:2062] Storages found:
    I0128 08:36:30.812608 4831 uvc-gadget.cpp:2071] 24c1024
    I0128 08:36:30.812685 4831 uvc-gadget.cpp:2074] Temperature sensors found:
    I0128 08:36:30.812752 4831 uvc-gadget.cpp:2083] AfeTemperature
    I0128 08:36:30.812810 4831 uvc-gadget.cpp:2083] LaserTemperature
    I0128 08:36:30.812850 4831 uvc-gadget.cpp:2086] Message blob about available sensors to be sent to remote:
    I0128 08:36:30.812888 4831 uvc-gadget.cpp:2087] STORAGE_NAME=24c1024;STORAGE_ID=0;TEMP_SENSOR_NAME=AfeTemperature;TEMP_SENSOR_ID=0;TEMP_SENSOR_NAME=LaserTemperature;TEMP_SENSOR_ID=1;
    UVC: IO method requested is USER_PTR
    Number of buffers requested = 4
    I0128 08:36:30.813045 4831 addi9036_sensor.cpp:139] Opening device
    I0128 08:36:30.813135 4831 addi9036_sensor.cpp:157] Looking for the following cards:
    I0128 08:36:30.813179 4831 addi9036_sensor.cpp:159] Qualcomm Camera Subsystem
    uvc device is ci_hdrc_msm on bus gadget
    uvc open succeeded, file descriptor = 9
    Set parameters by user
    UVC: Setting format to: YUYV 640x960
    Set IO METHOD passed!
    I0128 08:36:30.842564 4831 addi9036_sensor.cpp:254] Starting device 0
    ^CI0128 08:36:51.346691 4831 uvc-gadget.cpp:2435] ./uvc-gadget is now closing gracefully
    I0128 08:36:51.347048 4831 addi9036_sensor.cpp:296] Stopping device