XPS 9370 : unable to update Thunderbolt 3 firmware
 
Notifications
Clear all

XPS 9370 : unable to update Thunderbolt 3 firmware  

  RSS

Tompouce
(@tompouce)
Active Member
Joined: 3 years ago
 

Hi there,

I just acquired a new XPS 13 (9370) with 2 thunderbolt 3 ports pcie x4 and OPI GT4. I was eager to test my External GPU (Mantiz venus + GTX 1050 Ti + SSD 250) enclosure through Thunderbolt 3. But to obtain the full speed of this enclosure connected to the thunderbolt 3 I needed to have the last version of the TB3 Firmware  installed (version 25). 

I started by updating all my drivers and bios by connecting on dell support with my service tag. After installing all this i installed the thunderbolt 3 controller driver (Intel-Thunderbolt-Controller-Driver_39G55_WIN_17.1.64.250_A04.EXE) from dell support. Then I tried to update the Thunderbolt 3 firmware from dell support (Intel_TBT3_FW_UPDATE_NVM28_3H3DP_A01_4.28.06.001.exe). Unfortunatly I obtain this error :

Therefore I reinstalled the dell Thunderbolt controller driver and retried to update the firmware. But I obtained the same error. 

When I check the current driver and firmware version of the thunderbolt 3 program i obtain the following.


And if I try to connect my egpu enclosure I got an error seing that my external device may not work correctly.



And indeed when I launch a test of the Egpu, I only obtain half of the expected bandwidth in wrinting speed.

 

Here is a post of a similar configuration (XPS 9370 + akitio node + 1070) showing what i should obtain in term of performance.

https://egpu.io/forums/pc-setup/dell-xps-13-9370-akitio-node-nvidia-1070/

 

Does anyone have a hint for my problem on the update of the TB3 firmware?

Thanks by advance for your help.

Best Regards.

  

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
tanantish
(@tanantish)
Active Member
Joined: 3 years ago
 

That actually looks pretty much like what I have on my machine - I have the same dell XPS and my build went smoothly using an aorus gaming box/1070, so I don't think your host is the issue.

Have you had your Mantiz for a while? If so, you might need to look at  checking your enclosure's firmware - see  https://egpu.io/forums/thunderbolt-enclosures/mantiz-venus-sep-2017-firmware-with-full-22xxmib-s-bandwidth-dynamic-i-o-port-bandwidth-archive/

2018 13" Dell XPS 13 9370 [8th,4C,U] + GTX 1070 @ 32Gbps-TB3 (AORUS Gaming Box) + Win10 [build link]  

ReplyQuote
FJFG84
(@fjfg84)
Active Member
Joined: 3 years ago
 

I had exactly the same issue on a DELL Latitude 7285... Even worse, my NVM version is 16... I've tried everything with no luck, always is the same as you post:

My eGPU enclosure is MANTIZ Venus, purchased after January 2018, so it comes with the updated firmware. Glad i works and only fails when starting a game, that it works for a few seconds and the crash... but for work it works fine, even my CUDA-Z shows full speed:

Maybe one day DELL update their Thunderbolt drivers on the support web, so we have a correspondent drivers and firmware utility.

2017 12" Dell Latitude 7285 [7th,2C,Y] + GTX 1080 @ 32Gbps-TB3 (Mantiz Venus) + Win10 [build link]  

ReplyQuote
karatekid430
(@karatekid430)
Estimable Member
Joined: 3 years ago
 

If anybody is interested, I just updated my Dell 9370 NVM with the Dell 9575 NVM and nothing exploded or bricked.
It went from NVM28->NVM30 and External GPUs Supported: No->Yes
Not that the External GPUs Supported flag ever seems to matter. My eGPU worked with Dell 9365 with NVM09 and "No".

2018 04 24
2018 04 24 (1)

Flash at your own risk, use common sense and remember that if you flash an incompatible firmware, it could brick the Thunderbolt controller.

I was brave enough to try with mine because I had done the same in the past when I had the Dell 9365, and it successfully accepted firmwares from any Dell laptop with the same Thunderbolt controller model.

You will need Linux with a recent kernel. 4.13 or 4.14 is the minimum, but ideally just install 4.16.2 for now.

If no Thunderbolt devices are attached, you will need to wake the controller:
echo 1 | sudo tee /sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power

Then find out current NVM version:
cat /sys/bus/thunderbolt/devices/0-0/nvm_version

If 23, then we should back up - the 23 comes from factory, but only 28 is available for download. We will need to back up should we ever wish to revert. To back up, do:

sudo dd if=/sys/bus/thunderbolt/devices/0-0/nvm_active0/nvmem of=/path/to/backup/destination/file

Now we need to download the exe file from here:  http://www.dell.com/support/home/us/en/19/drivers/driversdetails?driverId=TRC47 - or just do:

cd ~/Downloads
mkdir harambe && cd harambe
wget  https://downloads.dell.com/FOLDER04765332M/1/Intel_TBT3_FW_UPDATE_NVM30_TRC47_4.30.02.002.exe
7z e *

Which should produce 0x080D_secure.bin within a subdirectory. You can verify it uses the same Thunderbolt controller as the Dell 9370 by:

hexdump -s19472 -n4 0x080D_secure.bin

Now to flash:

sudo dd if=0x080D_secure.bin of=/sys/bus/thunderbolt/devices/0-0/nvm_non_active0/nvmem
echo 1 | sudo tee /sys/bus/thunderbolt/devices/0-0/nvm_authenticate

If no Thunderbolt devices attached, wake it again:

echo 1 | sudo tee /sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power

Verify new NVM:

cat /sys/bus/thunderbolt/devices/0-0/nvm_version

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
karatekid430
(@karatekid430)
Estimable Member
Joined: 3 years ago
 

You guys didn't know that Windows NVM flashing only seems to work for 16.2 Thunderbolt driver or similar? It has been an issue for a long time.

It is more of an issue for flashing peripherals, but it could be an issue for flashing host firmware, particularly when using the Intel tool.

You can try using the Dell tool - download a firmware NVM exe, extract the exe using 7z and find packed inside the fwupdatetool.exe. Ignore the bin file that comes with the Dell archive unless it is actually the one you want.

The command is:

fwupdatetool.exe /up1 /path/to/nvm.bin

Or without the forward-slash in front of up1? Cannot remember. It's been a while.
Can add /f to downgrade or flash incompatible firmware - but only do so at your own risk and only if you are sure the file is compatible.
If you don't have a Thunderbolt device then you will need to find a way to force the Thunderbolt controller power. On Linux that is trivial regardless of vendor. On Windows, it depends on vendor. The unextracted Dell NVM exe files force the power, but only on Dell systems, afaik.

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
Tompouce
(@tompouce)
Active Member
Joined: 3 years ago
 

Hi karatekid430, 
Just saw your answer on my subject.
So do you think that under windows by unzipping the NVM 30 and using the cmd FwUpdateCmd.exe Up1 /f firmware_file.bin  I could patch my firmware from NVM 23 to NVM 30 if I have 16.2 or 16.3 trhunderbolt driver installed without risks?

Thank in advance

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
Tompouce
(@tompouce)
Active Member
Joined: 3 years ago
 
Posted by: karatekid430

You guys didn't know that Windows NVM flashing only seems to work for 16.2 Thunderbolt driver or similar? It has been an issue for a long time.

It is more of an issue for flashing peripherals, but it could be an issue for flashing host firmware, particularly when using the Intel tool.

You can try using the Dell tool - download a firmware NVM exe, extract the exe using 7z and find packed inside the fwupdatetool.exe. Ignore the bin file that comes with the Dell archive unless it is actually the one you want.

The command is:

fwupdatetool.exe /up1 /path/to/nvm.bin

Or without the forward-slash in front of up1? Cannot remember. It's been a while.
Can add /f to downgrade or flash incompatible firmware - but only do so at your own risk and only if you are sure the file is compatible.
If you don't have a Thunderbolt device then you will need to find a way to force the Thunderbolt controller power. On Linux that is trivial regardless of vendor. On Windows, it depends on vendor. The unextracted Dell NVM exe files force the power, but only on Dell systems, afaik.

By using the command you suggested on windows 10 with 16.2 thunderbolt driver, I was able to update the controler firmware to version 28 with the XPS 9370 file from dell support. And then I was able to update to version 30 by using the XPS 9575 file from dell support. Everything works fine and i now also have the egpu enabled support option enabled now on the thunderbolt properties.

However I have something weird that happened : On my thunderbolt properties windows i now have two controlers that appear! One with version 23 and the other one with version 30.
Is it normal? 

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
karatekid430
(@karatekid430)
Estimable Member
Joined: 3 years ago
 

Sorry, the forum does not notify me properly when there are replies. It was only a coincidence I happened to stumble across this thread again.

Yes, that is normal. Those details are only cached (can find / modify in regedit). Sometimes the NVM updates change the PCI Subsystem ID of the controller, and hence it is registered as a new controller.

Can clear list by uninstalling and reinstalling Thunderbolt driver. Use latest 17.4.77.400 WHQL Thunderbolt driver (I use necacom.net).

I might not have mentioned on this thread how easily Linux manages firmware. It does not do any checks, though, so make sure you feed it the correct file for the exact model from the manufacturer, or else it could brick (for example, flashing a peripheral firmware to a host controller, despite them being the same silicon). It should be completely safe, if and only if you provide the correct file. Linux can also backup the current firmware (although needs 8192 or 16384 bytes of /dev/zero prepended to reflash, headers not included when extracted).

https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/thunderbolt.rst

Best wishes!

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

itsage liked
ReplyQuote
Tompouce
(@tompouce)
Active Member
Joined: 3 years ago
 

Thank you Karate Kid, it worked like a charm. I installed the Thunderbolt driver you mentionned and all the bad information dissapeared on the thunderbolt dashboard! 
You are quite an expert on this, you managed to fix all my problems! Thanks

To do: Create my signature with system and expected eGPU configuration information to give context to my posts. I have no builds.

.

ReplyQuote
Wzza
 Wzza
(@wzza)
Active Member
Joined: 6 months ago
 
Posted by: @karatekid430

If 23, then we should back up - the 23 comes from factory, but only 28 is available for download. We will need to back up should we ever wish to revert. To back up, do:

sudo dd if=/sys/bus/thunderbolt/devices/0-0/nvm_active0/nvmem of=/path/to/backup/destination/file

Hi,

Would you be so kind as to explain how one can flash a firmware backup that was made following your instructions? I understand the raw dump cannot be reflashed as is. However, I did not quite get this comment from your most recent post:

Posted by: @karatekid430

(although needs 8192 or 16384 bytes of /dev/zero prepended to reflash, headers not included when extracted)

Does that mean adding 8192 or 16384 bytes of zeros to the beginning of the dump with dd? My dump is already larger than firmware binaries. What command would I have to use to then reflash? Thanks!

I have a Dell Latitude 7380 and was running into the same issue regarding the TB firmware upgrade. Could not get the Dell update tool to work at all and couldn't find any firmware file in its archive (NVM40). Turns out the resource files are sent to the 'User\AppData\Local\Temp\Dell' directory. I was then able to flash one of the provided bin files with FwUpdateTool. What's odd is that the only firmware (079F) I was able to flash corresponds to the Latitude 7280 TB controller...  Would it make sense to try and force flash the firmware intended (07F3) for my model (Latitude 7380)? How can I make sure that the two models share the same controller?

 

The main reason I would like to revert to the original firmware I backed up (NVM23) is to check how it registers. Although I did hex the backed binary and saw mention of '7280'... How is that possible? What difference could there be between the two firmwares, given that the two models do share the same TB controller, other than registering it to a given model?

 

Any help or insight on this would be greatly appreciated 😉

 

EDIT

So I made some progress:

1) Adding the header to my firmware dump, I found that it corresponds exactly to the 079F NVM23 firmware (Latitude 7280, not my model).

2) I hex compared the firmwares from the two models (079F and 07F3) and, apart from a string specifying the laptop model, they are exactly the same for NVM23 and NVM33. Looking at the most recent NVM40, there is more difference which I could not interpret.

3) Regardless of the subid (079F and 07F3), I was unable to downgrade the NVM below NVM40. I tried both the windows ('Error: 0x1 AUTHENTICATION_FAILED_RESPONSE_CODE') and linux ('invalid argument') methods and both fail after the firmware is sent to the controller. It seems the device itself refuses to authenticate a lower NVM version binary... Does that make sense? Is there a workaround?

4) I was able to flash the 07F3 NVM40 firmware successfully through FwUpdateTool. So now the TB3 controller displays the proper model (Latitude 7380).

Was all of this useless? Probably 🙂

This post was modified 6 months ago
2017 13" Dell Latitude 7380 [7th,2C,U] + GTX 1660 @ 16Gbps-TB3 (ADT-Link R43SG-TB3) + Win10 [build link]  

ReplyQuote