| SLA Status | Assignee | Support Status |
|---|---|---|
| ⚠ 841 hours | Open | |
ADSD3500
Recommended for New Designs
The ADSD3500 is a Time-of-Flight (ToF) Depth Image Signal Processor (ISP) for Analog Devices ToF products such as the ADTF3175 and ADSD3030. The Depth...
Datasheet
ADSD3500 on Analog.com
ADTF3175
Recommended for New Designs
The ADTF3175 is a complete Time-of-Flight (ToF) module for high resolution 3D depth sensing and vision systems. Based on the ADSD3100, a 1 Megapixel CMOS...
Datasheet
ADTF3175 on Analog.com
I am attempting to update the ADSD3500 firmware on the ADTF3175D Eval Kit (NXP host), but the update consistently fails at the final kernel handshake. The script pushes all firmware packets successfully, but times out waiting for the kernel driver signal, leaving the chip in ROM bootloader mode (Version 1.0.0.0).
Prior to running the update, the aditof-server was killed to prevent I2C bus contention, but the I2C bus still throws an Input/output error when attempting to read the Chip ID.
Environment:
Hardware: ADTF3175D Eval Kit (NXP Host Processor)
SDK Release: Attempted with both Release v6.0.0 and v6.1.0
Target Firmware: Fw_Update_5.2.5.bin and Fw_Update_6.0.0.bin
Steps to Reproduce:
SSH into the NXP host (10.43.0.1 or 192.168.56.1).
Stop the background server to free the I2C bus: sudo pkill -9 -f aditof-server
Navigate to the utility folder: cd ~/Workspace/Tools/Firmware_update_utility/
Run the update as root: sudo ./Firmware_Update Fw_Update_6.0.0.bin (or 5.2.5.bin)
The tool encounters an I/O error reading the Chip ID, pushes all packets, but times out.
Hard power cycles (unplugging for 15+ seconds) do not resolve the I/O error or the timeout.
Console Output (Firmware Updater):
analog@aditof:
/Workspace-6.1.0/Tools/Firmware_update_utility$ sudo pkill -9 -f aditof-server/Workspace-6.1.0/Tools/Firmware_update_utility$ sudo ./Firmware_Update Fw_Update_6.0.0.binKilled
analog@aditof:
Installed signal handler for SIGETX = 44
Failed to read adsd3500 chip id!
Switched from standard mode to burst mode
Before upgrading new firmware
Current firmware version is : 1.0.0.0
Writing Firmware packets...
Packet number: 382 / 382
Adsd3500 firmware updated succesfully!
Waiting for the ADSD3500 kernel Driver signal
ADSD3500 kernel driver signal timeout occured
Get status Command 100
Firmware update failed
Kernel Logs (dmesg):
The kernel log indicates continuous burst transfer failures on the I2C bus.
[ 17.068817] mx8-img-md: Registered sensor subdevice: adsd3500 1-0038 (1)
[ 17.068834] mx8-img-md: created link [adsd3500 1-0038] => [mxc-mipi-csi2.0]
[ 22.147238] adsd3500 1-0038: Write burst transfer failed
[ 22.258944] adsd3500 1-0038: Write burst transfer failed
[ 22.260902] adsd3500 1-0038: Read burst transfer failed
[ 22.372352] adsd3500 1-0038: Write burst transfer failed
[ 22.387354] adsd3500 1-0038: Write burst transfer failed
[ 22.387927] adsd3500 1-0038: Write burst transfer failed
[ 22.389527] adsd3500 1-0038: Read burst transfer failed
[ 22.420617] adsd3500 1-0038: Write burst transfer failed
I2C Detect Output:
Running sudo i2cdetect -y 1 shows UU at addresses 38, 58, and 68, confirming the kernel driver has claimed the addresses, but communication is still failing.
I have tried the following:
Running sudo ~/Workspace/Tools/adi-adsd3500-reset.sh to trigger a hardware GPIO reset.
Unloading and reloading the kernel driver (sudo rmmod adsd3500 and sudo modprobe adsd3500).
Performing a complete cold boot by removing all power/USB connections for several minutes to drain capacitors before attempting the flash again.
Despite these steps, the chip remains locked at 1.0.0.0 and refuses to accept the kernel wake-up signal after the packets are written.
What is causing this issue? How can I fix this?