(Note in the second link, old-school 16-bit BIOS code, beautifully compact and probably written in Asm; none of the bloated compiler output typical of UEFI.)
This final fix required modifying only two bytes of the BIOS to disable the wifi card whitelist
Of course, finding which bytes to modify is the hard part; which brings to mind the various tales about the cost of coming up with the solution vs executing it: https://news.ycombinator.com/item?id=2069275
I notice one of them is a NOP (90), so it's probably possible to do this fix in 1 byte --- find the jump and either set its offset to 0 so it will never jump, or force it to jump by replacing the 7x with EB. This was all day-to-day when I was in the cracking scene decades ago.
> units with better wifi cards would have cost more. Depending on how they structured their pricing: it may have been been cheaper to get the lower-end units and install your own wifi cards rather than buy the higher-specced ones from the factory. By blocking owners from using 3rd-party parts the laptop manufacturer can squeeze more money out of customers
Another good argument against proprietary firmware.
The white list is because the device is certified for being "a good neighbour" in radio usage as a whole - because the WiFi module doesn't include the antenna which is part of the laptop.
Around 2014 (haswell era), Thinkpads all had the same wifi hardware, an Intel 7260. They still pulled this stunt by disabling 5GHz bands on cheaper models.
The next year they ditched the whitelist on most models.
> I don't have the actual prices but it's safe to assume that units with better wifi cards would have cost more. Depending on how they structured their pricing: it may have been been cheaper to get the lower-end units and install your own wifi cards rather than buy the higher-specced ones from the factory. By blocking owners from using 3rd-party parts the laptop manufacturer can squeeze more money out of customers, but in doing so also deprives the customer of traditional upgrade rights and repair rights.
If we really want to reduce electronic waste, we need to start much stricter regulations against companies about repair-hostile blocks in their electronic hardware.
> If I ever design a laptop it's going to have: An array of different charger inputs, so I can skip all of these silly shenaneggins and just use whatever laptop charger I pick up off the street.
For various older models, Cooler Master sells a "universal" AC adaptor with interchangeable plugs. It works for most older kit, although Dell has the deplorable detection circuit (noted by the OP) that may cause problems.
For modern laptops, USB-C makes it possible[1] to charge with any USB-C AC adaptor.[2]
[1] Edited to recognise that my experience is limited to a set of three Chromebooks and three "smartphones".
[2] Edited to USB-C AC adaptor, not just any USB-C adaptor.
>>For modern laptops, USB-C makes it possible to charge with any USB-C adaptor.
That's.....hmmmm.....a very generous interpretation of the current situation.
Yes, a laptop might be physically compatible with any USB-C charger....but whether it will actually charge is a different matter. In my testing with a Razer Blade 13:
Working:
- Apple USB C 45/65W charger
- Random Amazon 45W USB-C charger
- UGreen 45W USB-C charger
Not working:
- Apple USB-C 20W charger
- None of the 4 USB-C PD-compatible power banks I tried work, despite 45W minimum PD output
-Samsung 25W PD Charger
- Nintendo Switch Charger
- Any charger that's not PD-compatible, even if it ends with a USB-C port
The trick is probably the voltage. It's very probable that all the "working" chargers in your list can supply 15V or 20V, while the chargers on the "not working" list probably top at 9V or 5V. Unless the laptop has a circuit to boost the voltage to the battery voltage, it will not be able to charge.
The statement works better if it's restricted to "for modern laptops, USB-C makes it possible to charge with any laptop USB-C charger".
I use an x131e and went through the same gyrations for the bios a year and a half ago. Now I feel bad about not posting the results. But after that ordeal I was just glad to be done with it!
It took me a less work because I found a hacked and original bios for another model and was able to use that to figure out where the required change was-- so I didn't have to go as deep in the reverse engineering.
Thanks Hales for being more civilly minded than I was!
I'm pretty sure it doesn't. I had tried it. It probably works for Windows, but not for Linux. You can't get to the provisioning screen in the BIOS. I think already provisioned tpm continues to work.
BIOS is often able to set mask bits in the CPU or chipset's pci bridges that prevent the devices from being reported to the OS. Before loading additional code like user DXEs or bootloader, BIOS commands a one-way sealing operation that prevents modifications until reset.
I had one of these, the hinge was the first hardware failure point. It should be possible to coreboot this using the chromebook version as a guide (not sure if boards are identical...probably?)
I love Lenovo laptops. A friend bought an old T420 from 2011? It was a refurbished business laptop which had a bios password on it so we couldn’t fix the date time after replacing the cmos.
A quick Google and found you can reset the bios by shorting 2 pads together and then jumping into the bios. It would bypass the bios password and allow us to remove it. It was a fun experience.
Oh god, I remember those Gillard-era Netbooks. We used them once (and only once) in a Year 11 English class.
They were so poorly configured that when the whole classroom tried to use them at once they'd take half an hour (no exaggeration) to log onto the network. Was a very interesting lesson in how to deploy IT infrastructure badly and not a lot else...
http://www.paul.sladen.org/thinkpad-r31/wifi-card-pci-ids.ht...
https://www.endeer.cz/bios.tools/bios.html
(Note in the second link, old-school 16-bit BIOS code, beautifully compact and probably written in Asm; none of the bloated compiler output typical of UEFI.)
This final fix required modifying only two bytes of the BIOS to disable the wifi card whitelist
Of course, finding which bytes to modify is the hard part; which brings to mind the various tales about the cost of coming up with the solution vs executing it: https://news.ycombinator.com/item?id=2069275
I notice one of them is a NOP (90), so it's probably possible to do this fix in 1 byte --- find the jump and either set its offset to 0 so it will never jump, or force it to jump by replacing the 7x with EB. This was all day-to-day when I was in the cracking scene decades ago.