Post Go back to editing

Firmware update issue

Category: Software
Product Number: ADTF3175
Software Version: SDK 6.1, Any Firmware Version

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
Killed
analog@aditof:
/Workspace-6.1.0/Tools/Firmware_update_utility$ sudo ./Firmware_Update Fw_Update_6.0.0.bin
Installed signal handler for SIGETX = 44

  1. Reading Adsd3500: 5 error: Input/output error

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?

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.