-
Notifications
You must be signed in to change notification settings - Fork 281
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lenovo Thinkpad X201 reports #24
Comments
I'll investigate further and update this issue accordingly. |
Stock BIOSBoots fine. Goes to GRUB2 menu.
Stock BIOS, neutralisedBoots, after a delay that initially made me think the laptop was bricked (I did not time it, but would guess it was somewhere between 15-60 seconds). Goes to GRUB2 menu.
Coreboot with SeaBIOSBoots fine, though with no menus (skips SeaBIOS menu and skips GRUB2 menu).
Coreboot with SeaBIOS, neutralisedDoesn't boot. |
Currently coreboot doesn't work with me_cleaner unfortunately, probably due to this. If you want you can try to add the timeout in the Nehalem raminit (src/northbridge/intel/nehalem/raminit.c) and see if that fixes it. |
@corna wrote:
Thanks for the explanation! I am a total noob at C programming, so I am not sure how to add a suitable timeout. I would welcome your suggestions or patches on that front, and would potentially be willing to test them on my X201. I have also asked for help on the Coreboot mailing list. Also, I understand that the i5-520M in this X201 is of Westmere architecture, not Nehalem. Not sure if that makes a different w.r.t. the raminit. |
@sampablokuper
You probably didn't add the VGA rom to your coreboot build. Must use bios_extract or UEFITool to get the vga rom out of the original bios, then add it to coreboot. Have a look here.
Did you fix it?
It is the "flop" of the same arch: same logic, smaller production process. That can actually be the reason why we (your X201 and my T410) need a timeout in raminit. Reducing distances change the timings all around... Fixed? I can't easily flash and test because T410 chip is covered by an hard surface; I had to dismantle the whole laptop. And then desolder the chip because my programmer couldn't turn on the chip without desoldering; probably some copper tracks are too long or go figure what else. Anyway, the chip is clipped on the table and I MUST flash coreboot in it before resoldering onto the mobo, in order to disable the flash lock ... |
I added a timeout to the two functions with the "FIXME: add timeout" comment. Patch nehalem_raminit_timeout_for_neutralized_me.diff.txt Notes:
@sampablokuper |
Thanks for all this. It might be a while before I find more time to experiment with the X201, sorry. I think you are right about graphics being an issue. See the thread Lenovo Thinkpad X201: cannot boot encrypted Debian w/Coreboot & GRUB2. I hope to report back, here or on the mailing list, or both, when I have had a chance to test further. As for the timeout patch, thanks for drafting that. GNUtoo also made a similar patch recently. To reduce duplication of effort among Coreboot volunteers, you may wish to read and participate in the thread [coreboot] [PATCH] nb/intel/nehalem/raminit.c: Add timeouts when waiting for heci, on the Coreboot mailing list. Thanks again. |
@sampablokuper Np. I gave up the T410 about 2 years ago by entering the coreboot's IRC channel and finding there a swedish guy bothering for me to study a book on BIOSes instead of helping me to add the T410 to the coreboot buildchain (aka Gunny vs Sweedy). This guy from the thread you pointed me: good developer, bloody annoying when socializing (note: I got drunk with him at an hacker camp in 2009; I'm not talking for chat misunderstandings only). I took that laptop back in my hands just because you were struggling; I don't need it. But if you don't need it too, I go back to my stuff. I don't really care to fight against windmills, tech giants and other carnivores. Last but not the least: the boot behaviour you (and the guy in the email you linked) have described, is exactly the one you get when you don't have the VGA option rom in the flash. In such case both grub fail to enable the display, and you must wait for the linux kernel to do it. Windows too would fail. Seabios works fine if you enabled native init at conf time; for text only display. Please, report when you'll find the time to work on this issue. cheers Edit: holy crap. Denis "GNUtoo" is another engineer! He looks at the datasheet before doing something! The DEFECT we are trying to fix, is BY DESIGN. No books say that as far as the books authors are the designers, and the copyright is enforced. |
Thanks for this, and sorry not to be able to do anything on the X201 right now. As I say, I hope to come back to it when time allows. Also, please can we keep this thread to technical matters relating to booting the X201 (and other Nehalem/Westmere-based Thinkpads, insofar as they provide insight into the X201) with a neutralized Management Engine? Thanks. |
Thinkpad X201: Stock BIOS, neutralised: doesn't boot boots fine after a delay of <1 minute. Can you please confirm, is the fan control working? If Intel ME is completly disabled through it's own setup utility the X201 laptop fan will not work and the laptop will overheat |
@kyytl wrote:
I don't currently have access to that X201. Will try to remember to check next time I do have access to it.
Interesting. Would you mind explaining how you reached that conclusion? Thanks! |
It's well documented behaviour. Use Google or: https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/X201-severely-crippled-after-disabling-Intel-AMT-AT-in-BIOS/td-p/811249 My own tests: |
Also please check: #27 "At some future date, will me_cleaner be able to remove just the potentially malicious parts of the Intel Management Engine? I’m curious because currently me_cleaner removes the entire Intel Management Engine, which includes useful and (in my opinion) necessary things like fan control and thermal management. I would like to be able to remove the malicious part of Intel Management Engine without having to give up useful stuff (mentioned above), and also without the high risk of bricking my next laptop (currently using Late 2011 13” MacBook Pro). ..." |
And please notice that if you just disable Intel ME in the stock BIOS setup you produce that +-1 minute delay to the boot. Basically the computer will then quite soon be FUBAR because you have just disabled the thermal control and fan operations. |
@kyyti wrote: Thanks for this. Wow. Turning off AMT using the stock BIOS interface potentially damages the laptop?! That's pretty shoddy on Lenovo's part. Looks like that was c. 2012-2014. And none of the BIOS updates up to 2014 (which seems to be the most recent one) fixed this. At least, it's not mentioned in the README. Do you know if Lenovo has addressed or acknowledged this at all? I haven't found any evidence of their having done so.
Which tests did you perform on these machines, and what were the results? |
Not AMT, Intel ME. AMT is just part of it. ME includes some of the core functions of the laptop. Please read the documentation. There is nothing to fix with BIOS updates as thermal management and fan controls are just some of the intended functions of Intel ME. It's like removing the motor of an automobile and crying to Toyota that the car does not work. And nevertheless, Thinkpad X201 is already so called legacy system. This whole me_cleaner fix wouldn't interest us if X201 series were on the Lenovo upgrade list for the Intel AMT vulnerability but it is not as it is already a legacy (non updated) system. "... currently me_cleaner removes the entire Intel Management Engine, which includes useful and (in my opinion) # necessary things like fan control and thermal management. I would like to be able to remove the malicious part of Intel Management Engine without having to give up useful stuff " |
@sampablokuper @kyyti I have a T410 (same platform, different formfactor) that I'm experimenting with, and have found that instead of using me_cleaner to strip anything, that ONLY toggling the soft disable bit will disable the ME but allow the machine to boot. Stripping still prevents boot (hangs), but just soft disable works, with the exception of needing to blacklist intel_ips on some (all?) distros to prevent logspam. I suspect this issue to be similar to one @kakaroto encountered working on the Purism laptops, in that one or more partitions is likely required to remain to boot the machine. I forget which one, but it is used to store configuration data for the network controller(s). |
I have a work and a non-work github account here, so the above and I are one and the same... I suspect more research is required regarding the necessity of some of the modules with the various Thinkpads out there, and some other models as well. |
@ilikenwf OEM firmware or coreboot? |
Coreboot :) Now if only the master branch wasn't broken on the x201/T410. Intelmetool's output shows the warning about being "nonremovable," but then can't find the ME device. |
The only other caveat is the need to blacklist intel_ips because it spams messages about not finding the ME or it being stalled. |
It was the "MFS" partition. You can whitelist it if you use the dev branch, and see if it makes a difference. |
I did the same to my T410 a couple of months ago, I confirm your findings (disable ok, stripped down to ~80k doesn't boot). I didn't report here because I also soldered a bigger flash chip and changed the ram modules at the same time, and I'm having random reboots every 40-60 mins since then; then I hadn't spare time to keep working on that machine. A small note, maybe useful: about two years ago I have edited coreboot's X201 memory mapping to make the T410 port. By digging into the device tree I noticed a few differences in the mappings. Those small differences might be the reason for our current issue... Please all ( @corna ) keep posting on this thread if you make any progress on X201/T410. |
@mfp20 I saw your commits on the gerrit, which of them is the one I should look at, the one with the larger number of added files, or just the smaller one and the gpio.h, or was it the patch file on the bug tracker? Regardless I wish someone would figure out why the master branch is broken - https://www.coreboot.org/Board:lenovo/x201 In my case my only reason for even being useful here and for coreboot is that my employer uses thinkpads, and whenever one breaks or dies and nobody else here in IT grabs it, I do and attempt to rehab the poor thing, with varying results (RIP trackpad and mouse on my T400). Next time I take the T410 apart, I'll attempt stripping all but the MFS partition per @kakaroto, and then if that doesn't work, I'll go all trial and error on the stupid thing to see if one of those partitions is the cause. |
@kakaroto your addition was useful! After some trial and error, I've found that you can soft disable and strip the ME on the T410, and thus very likely the x201, if you keep the EFFS partition. As an aside, I did manage to get a fully working T410 build working, but because of the nature of the changes I just pushed them into a fork here on github. I have an easier time chip clipping these thinkpads because I always cut out a square on the frame to allow access to the chip. |
It does appear that stripping in this manner somehow breaks system reboots/shutdowns (or causes them to take a long time to happen) and sometimes keyboard input in Seabios. Not sure if it's an ME related issue there or if it's ACPI in Coreboot. |
@mparnelldmp honestly I don't remember the details. I probably duplicated all the x201 files to a new t410 directory, then grep&replace "x201" to "t410", and then adjusted the memory and I/O addresses taking the new values from my t410. The result should be many files added, but just a few changed. @ilikenwf is the EFFS partition zeroed? I mean, those are ~900kB of ... wasted flash, or can be reused? |
@mfp20 I'm both of the accounts you pinged :) The EFFS is not zeroed. I'm guessing it has something inside required for boot. |
@ilikenwf Cool. The EFFS partition is probably the pre-ME11 equivalent of MFS. |
Thanks! I'll take a gander. I had to order a new T410 board on eBay, though, as the one I have was built from junk and didn't have the correct heatsink on the cpu, and thus it overheated and now beyond powering on the thing appears to be dead... |
If when using coreboot (master seems to be broken but older versions still work) there is no huge delay on the EHCI console output with a cleaned ME, it is possible that vendor simply has very long timeouts where coreboot has infinite loops in the raminit... shutdown/reboot requires working SMM which might simply be broken for ibexpeak in coreboot (does it work with full and valid ME region?)... |
I am observing very interesting thing with x201 and failure which looks exactly as booting different platform with wrong MRC: in short, memory initialization may fail due to still-unclear bug when using coreboot and full ME image with HAP bit being set under certain circumstances. How to reproduce:
Re-using the original ME firmware seem to persistently fix the issue. If the HAP-enabled firmware usage is critical, you could possibly invalidate training data by putting DIMMs back and forth, using different DIMM configuratin and booting board without memory, though I`ve not reached stable 'revival' flow there yet. Please confirm if the issue is observable somewhere else because this particular board showed memory link training(?) in the past with different dimms and coreboot at the moment when it was supposed to boot just ok - I`d be more determined to dig this down then. //overall fixes, including wording |
The #24 (comment) addresses 2-Gbyte PC-10600 double-sided memory module(s) and 4-Gbyte double-sided sticks PC-10600 are not working in reliable manner with x201x, so at least part of the problem could be addressed to higher frequencies on the MC`s lanes. While I still have none of solid explanation why reset from 16-bit mode triggers permanent boot failure described previously, I've partially resolved this problem for myself by disabling AMT and leaving full-fledged ME within the system due to power consumption issues and lack of hardware fan control with ME being disabled. |
@xdel, just for clarity: what do you mean by "x201x"? For example, do you mean "x201, x201i, x201s, and x201t"? (Or have you only tested those memory configurations on a subset of that list?) Or was the "x" at the end just a typo? 😄 Thanks! |
It goes for x201/x201t (U520, M520 and L620 variants) I do possess. |
me_cleaner + coreboot should work now correctly on the X201. There were two issues:
|
Confirmed working on my x201 with coreboot. Very nice work. Seems like the same issue with me_cleaner and stock BIOS appears where fan is no longer controlled and remains off. I have used fancontrol service on Debian Buster to fix this which works beautifully. Problem with it though is that it stops controlling the fan after resume from suspend. The workaround is to restart the service, and I have found the way to do it automatically I put this file (I named it 20_fancontrol) in your /lib/systemd/system-sleep/ folder
That should keep the fan running even after suspend. |
So, the X201 is working fine with Coreboot and me_cleaner? Any outstanding issues to report other than fan? Getting setup to coreboot some x201's and would also like to apply me_cleaner. If coreboot and me_cleaner are not possible, I am leaning towards just neutralising ME. |
@nedson wrote:
From the latest reports, this seems to be true. There's always a chance that this might have been due to a lucky combination of versions and/or BIOS chips, though.
For one or more of those X201s, it would be great if you could try setting them up with Coreboot and me_cleaner, and report back, in this thread, on whether that succeeded or failed. (Be sure to have at least two consistent, clearly-named dumps of each X201's flash ROM content before you start replacing that content with anything else, just in case you need to restore them to their original states.) Hopefully it will succeed, but if not, then that would be helpful to know! |
@sampablokuper |
Has anyone ever tried a small ME-FW? I mean, there are different types of ME. The x201 usually uses the big one with AMT and so on, but there are small images which doesn't support remote management (1,5 MB big?). Sure, the main goal would be to remove it entirely (or almost...) but to solve the fan issue and other ones, what about a small one? |
System
Lenovo Thinkpad X201 with MX25L6445E chip; has an SSD with GRUB2 and minimal Debian Jessie (both installed via a Debian Jessie AMD64 netinstall DVD).
Results
doesn't bootboots fine after a delay of <1 minute.The text was updated successfully, but these errors were encountered: