[Discussion] Firmware for Asmedia USB 3.0/3.1 Controllers

@lordkag
Hello!
I have a question for you. You know what is contained in the head firmware Asmed 104x?

scr.JPG

Yes, it was explained in the previous page. In this message is the general structure, but also my proof that the header is common to all identical controllers. Unfortunately, I have failed to account for the 1042 vs 1042A that shroeder pointed out.

From this I would assume that it is easier to extract the firmware, since the header is common: the only care is to identify the controller - U2104_RCFG for 1042 and 2104B_RCFG for 1042A. As for inserting it, the risk is greater. While the header is no longer needed, there are 3-4 bytes that might account for something, if you look at the last picture in that post. There is also a section at the end of 1042A firmware, when found in BIOS:

asm104xA inBIOS end.png



But it is always the same, from what I have found. Until someone with a hot-air station and great skill can assume the risk of testing this, it remains just a theory. And even then, it is not possible to automate the process, only a manual hex edit would do the job.

It turns out that the firmware itself does not depend on the header? That is, you can cut off the header and the body gently inserted into the module "OnBrdDevDXE" instead of the old one. Module "OnBrdDevDXE" insert into the BIOS and flash. And logically, if everything has been inserted correctly, should work without problems?
Interestingly, for Asus Z97-Deluxe, I see the beginning of the body firmware, but I can not understand where it ends.

Yes, you ignore header, header checksum and body checksum + last signature, just extract body and replace. The whole firmware is always 0x10000 bytes, from what I have found. We already know from this message, third and fourth picture, that the body for 1042 starts with 02006302 and the body for 1042A starts with 02010502.

But I discovered new things. The firmware inside BIOS is also 0x10000, just has a different structure:

Asmedia asm104x firmware in BIOS.png



So it starts with the body + followed by padding + then SectionU + 0x3C5 padding + size + end = 0x10000. So the update should work by replacing the body, make sure that padding follows, input right size, correct ffs checksum. I think there are no other bytes involved, but without someone with a board to test it, this is wishful thinking.

1 Like

its possible update Asmedia 104x USB 3.0 OpRom with UEFI BIOS Updater? or in a near future?

@ monta990:
Welcome at Win-RAID Forum!

AFAIK there is only a Firmware for USB Controllers available and no Option ROM module.
Since the UBU tool is only able to update an already present Option ROM module, you cannot expect the introduction of the requested feature.

Regards
Fernando

@lordkag

I tried upgrading my ASMedia 104x USB ports to 130201 (the one from station-drivers) and it flashed successfully but I get the same version as hanson’s when I do a /d switch: 100803_00_00_0d. SVID:SSID is 0x174c:0x2104. It seems to be working properly even in Windows but I’m still curious why it doesn’t show the correct version?

Also, what is the latest firmware that I can flash?

@kevindd992002

You should have read some of the above posts before flashing any firmware. Hanson has bricked his front USB3 ports (with my “generous” help) by crossflashing. What we didn’t knew at the time, was that there are two types of controller - 1042 and 1042A. The last firmware for 1042 is 130125_00_02_00 and for 1042A is 131025_10_11_03.

DON’T make the mistake of crossflashing. Either visually check the controller (not sure if it has the A letter) or dump your current firmware and check for U2104_RCFG = 1042 or 2104B_RCFG = 1042A.

@lordkag

I did actually read the posts before flashing. I didn’t flash the file that you provided in the original post. I used the one from station-drivers. It did not brick my USB ports as they seem to be working normally. It’s just that they don’t show the correct version. What do you think is wrong? Should I just flash back a lower version?

I think you have 1042 controller and you flashed 130201_10_02_02 = 1042A.



Oh ok. In that case, why do I still see them working properly in Windows? Can I just reflash with the correct version without any future problems?

Yours still work because the firmware is untouched. At that time I ported the header from 1042 to 1042A (without knowing about the 2 types) and ended up with a bang.

I think you can flash to 130125_00_02_00, but is your controller really just 1042? It would have been better to save your old firmware.



Got it. Even with the current (100803_00_00_0d) I have, I still can dump the firmware by doing a 104xfwdl /A command, right?

I have an Asus X79 Sabertooth which comes with 1042 chipset I believe. (This is what it says in the motherboard manual chipset diagram). Currently I have the 120816_02_02_6D firmware, where can I download the 130125_00_02_00 and how do I dump the current firmware to double check it is the 1042 not 1042A?

@ Wam7:
Welcome at Win-RAID Forum!

Only an expert like lordkag will be able to answer these questions. Hopefully he will see them.

Good luck!
Dieter (alias Fernando)



If you have 120816_02_02_6D firmware, then you most likely have an ASM1042 controller. You can check this by dumping current firmware with "104xfwdl.exe /A" and search for U2104_RCFG. It is recommended to do that, because your board seems to have an embedded ASM1042A firmware in UEFI.



Firmware 130125_00_02_00 is attached. Just boot from DOS, run d.bat for verifying current firmware, u.bat for updating, or any of the supported commands:

Asmedia_asm1042_130125_00_02_00.rar (170 KB)

@lordkag

When I flashed the firmware that I got from station-drivers, how could it "not touch" the firmware of my board if it was an ASM1042? Did it practically downgrade it to v (which is what I see when verifying the firmware)?

When I said untouched, I meant not modified by anyone. Probably the controllers are similar and one firmware can work on another controller, but it will be limited. This is why you get the version 10083_00_00_0d, which is probably the oldest version known by the flasher (10-08-03, YY-MM-DD), instead of unknown version. Hanson had the same report, which shows that the firmware is not properly communicating with your controller.

Given the fact that you get the same wrong version and you have an old mainboard (probably 1042A was not even released at that time), there is 95% chances that your controller is ASM1042. So you should flash the above firmware.



Ok. I’m assuming the firmware above is an untouched version of the latest firmware for the 1042?

I’ll still dump the firmware when I get the chance, just to be sure.

i did the backup of my sabertooth x79 asus , file in 128kb per controller while the file of first post is 64 kb

the info result


1 > Bus:0x07 Device:0x00 Function:0x00
FW Version : 120816_02_02_6d
(SVID:SSID = 0x1043:0x8488)

2 > Bus:0x08 Device:0x00 Function:0x00
FW Version : 120816_02_02_6d
(SVID:SSID = 0x1043:0x8488)

3 > Bus:0x09 Device:0x00 Function:0x00
FW Version : 120816_02_02_6d
(SVID:SSID = 0x1043:0x8488)

sab_x79_bios_4701.zip (74 KB)