$20 mini PC (Dolby controller) with unknown firmware password

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

autoturk

Active Member
Sep 1, 2022
240
225
43
as usual: repasting seems to have helped quite a bit. Now the fan doesn't turn on unless I'm running sysbench.

EDIT: Nevermind. After a sys bench session the fan turned on and now won't turn off despite the temperatures dropping. It seems to respond to temperature events to a certain point, after which it just keeps running.
I think I figured out what might be going on: It seems there are hidden bios settings that suggest that the EC is responsible for fan control, and if the EC thinks that the OS is hung (because it doesn't receive the proper signal from the OS), then it defaults to a particular percentage. See the "screenshot" (excuse the picture of a screen -- I was in a rush).

For the time being I'm going to:

1. Disconnect the fan and run some stress tests. This is a laptop CPU and this heatsink is much beefier than typical laptop CPUs, so maybe it might be good enough running passively. I've been running `stress-ng` for the better part of an hour and it's up to 70* C so far with no sign of throttling.
2. Try to modify the BIOS "Optimal" setting for the hung OS fan speed and reflash.

IMG_5897 Large.jpeg
 
Last edited:
  • Like
Reactions: Samir and nexox

nexox

Well-Known Member
May 3, 2023
1,431
682
113
I was thinking how to make patching as easy as possible. I would like to try to make a universal binary patch which can be applied to each individual extracted BIOS. That should just be the difference between my original BIOS and the first patched BIOS. Anybody has experience with doing this? There are plenty of potential options out there but it is hard to figure out where to start.
I plan to take a look at this today or tomorrow, as soon as I can drag a spare monitor over close enough, removing the password should be trivial, but I haven't looked at the changes you made for secure boot.
 
  • Like
Reactions: Samir

ru me

Active Member
Jun 2, 2018
154
194
43

There's a bios recovery option, I wonder if this will work instead of using the programmers.

Still doesn't fix the password problem, I don't imagine.
Your particular example seems to be quite old, but there usually are BIOS recovery options. Did you try this option? If we can truly reflash the BIOS, that could be helpful. However, this would probably trigger a (NVRAM?) reset from the EC which restores the password. I guess only way to find out is to try.
 
  • Like
Reactions: Samir

ru me

Active Member
Jun 2, 2018
154
194
43
Your particular example seems to be quite old, but there usually are BIOS recovery options. Did you try this option? If we can truly reflash the BIOS, that could be helpful. However, this would probably trigger a (NVRAM?) reset from the EC which restores the password. I guess only way to find out is to try.
Oh, wouldn't you need the BIOS from the device itself? Or would you just rewrite part of the BIOS? If so which parts?
 
Last edited:
  • Like
Reactions: Samir

nexox

Well-Known Member
May 3, 2023
1,431
682
113
I'm still working on the secure boot thing, but this command will remove the bios password, using the bbe utility from: bbe - binary block editor

Code:
cat dolby_bios_stock.bin | bbe -o dolby_bios_nopass.bin -e 's/3P\xa1y(d\xde\x2e\xb4\xd4E D\xb7\xbd\xef\xc8&\xe4\xd5/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/'
 

ru me

Active Member
Jun 2, 2018
154
194
43
Oh, wouldn't you need the BIOS from the device itself? Or would you just rewrite part of the BIOS? If so which parts?
I'm still working on the secure boot thing, but this command will remove the bios password, using the bbe utility from: bbe - binary block editor

Code:
cat dolby_bios_stock.bin | bbe -o dolby_bios_nopass.bin -e 's/3P\xa1y(d\xde\x2e\xb4\xd4E D\xb7\xbd\xef\xc8&\xe4\xd5/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/'
Yes, it could be scripted. I was more thinking of using something based on bdiff.
 
  • Like
Reactions: Samir

autoturk

Active Member
Sep 1, 2022
240
225
43
so the EC is an IT8528 but the linux driver it seems highly dependent on the firmware associated with it. Somebody who has more linux knowledge than me: can you extract the driver from the eMMC and maybe get some details on what might be going on?
 
  • Like
Reactions: Samir

nexox

Well-Known Member
May 3, 2023
1,431
682
113
UEFIPatch
I just tried that out, but from what I can tell the UEFITool old_engine branch can't process NVRAM data and the new_engine branch can't patch. There's not much in the way of debug output from UEFIPatch, though, and it looked annoying to add, so perhaps I'm just doing something wrong and can't tell what.

For reference, here's the patch.txt I came up with:
Code:
# Replace 20 byte password hash with nulls:
CEF5B9A3-476D-497F-9FDC-E98143E0422C 19 P:3350A1792864dE2EB4D4452044B7BDEFC826E4D5:0000000000000000000000000000000000000000
 
  • Like
Reactions: Samir

tp1

Member
Feb 5, 2016
72
72
18
so the EC is an IT8528 but the linux driver it seems highly dependent on the firmware associated with it. Somebody who has more linux knowledge than me: can you extract the driver from the eMMC and maybe get some details on what might be going on?
there is also a TI MSP430 micro-controller on board. Either, being initialized by the bios/EC or by the OS in the eMMC. What does a lspci and lsusb show under linux? thx
 
  • Like
Reactions: Samir

autoturk

Active Member
Sep 1, 2022
240
225
43
there is also a TI MSP430 micro-controller on board. Either, being initialized by the bios/EC or by the OS in the eMMC. What does a lspci and lsusb show under linux? thx
Here you go. You didn't ask but I also included a superiotool run which shows the ITE chip. It also shows as Aspeed AST2400 (IPMI?!) which doesn't seem right.

 
  • Like
Reactions: Samir

ru me

Active Member
Jun 2, 2018
154
194
43
I was trying to use the unlocked bios to come up with a binary patch and failed. The AMI utility is very handy but it seems to do more than single bit changes. When I combined parts of different BIOS versions I typically ended up with corrupted ME and other stuff slightly broken. As long as we have to open the units anyway for flashing I guess I can live with the current state.
 
  • Like
Reactions: Samir

jode

Member
Jul 27, 2021
72
59
18
pull cover to the front, put a screwdriver in this holes helps.
remove the nut on the power connector, and a bunch of screws under the foam later. not required to remove cover.
Is there a non-destructive way to remove the foam to get to the screws? My efforts so far have not been successful :(
 
  • Like
Reactions: Samir