A couple of weeks ago, I waxed glowingly about Ubuntu running on a handful of Intel NUCs that I picked up on Amazon, replacing some aging PCs serving various purposes around the house. I have since returned all three of those, and upgraded to the i5-3427u version, since it supports Intel AMT. Why would I do that? Read on...When my shiny new NUCs arrived, I was quite excited to try out this fancy new AMT feature. In fact, I had already enabled it and experimented with it on a couple of my development i7 Thinkpads, so I more or less knew what to expect.
But what followed was 6 straight hours of complete and utter frustration :-( Like slam your fist into the keyboard and shout obscenities into cheese.
Actually, on that last point, I find it useful, when I'm mad, to open up cheese on my desktop and get visibly angry. Once I realize how dumb I look when I'm angry, its a bit easier to stop being angry. Seriously, try it sometime.Okay, so I posted a couple of support requests on Intel's community forums.
Basically, I found it nearly impossible (like 1 in 100 chances) of actually getting into the AMT configuration menu using the required Ctrl-P. And in the 2 or 3 times I did get in there, the default password, "admin", did not work.
After putting the kids to bed, downing a few pints of homebrewed beer, and attempting sleep (with a 2-week-old in the house), I lay in bed, awake in the middle of the night and it crossed my mind that...
No, no. No way. That couldn't be it. Surely not. That's really, really dumb. Is it possible that the NUC's BIOS... Nah. Maybe, though. It's worth a try at this point? Maybe, just maybe, the NumLock key is enabled at boot??? It can't be. The NumLock key is effin retarded, and almost as dumb as its braindead cousin, the CapsLock key. OMFG!!!Yep, that was it. Unbelievable. The system boots with the NumLock key toggled on. My keyboard doesn't have an LED indicator that tells me such inane nonsense is the case. And the BIOS doesn't expose a setting to toggle this behavior. The "P" key is one of the keys that is NumLocked to "*".
So there must be some incredibly unlikely race condition that I could win 1 in 100 times where me pressing Ctrl-P frantically enough actually sneaks me into the AMT configuration. Seriously, Intel peeps, please make this an F-key, like the rest of the BIOS and early boot options...
And once I was there, the default password, "admin", includes two more keys that are NumLocked. For security reasons, these look like "*****" no matter what I'm typing. When I thought I was typing "admin", I was actually typing "ad05n". And of course, there's no scratch pad where I can test my keyboard and see that this is the case. In fact, I'm not the only person hitting similar issues. It seems that most people using keyboards other than US-English are quite confused when they type "admin" over and over and over again, to their frustration.
Okay, rant over. I posted my solution back to my own questions on the forum. And finally started playing with AMT!
The synopsis: AMT is really, really impressive!
First, you need to enter bios and ensure that it's enabled. Then, you need to do whatever it takes to enter Intel's MEBx interface, using Ctrl-P (NumLock notwithstanding). You'll be prompted for a password, and on your first login, this should be "admin" (NumLock notwithstanding). Then you'll need to choose your own strong password. Once in there, you'll need to enable a couple of settings, including networking/dhcp auto setup. You can, at your option, also install some TLS certificates and secure your communications with your device.
AMT has a very simple, intuitive web interface. Here are a comprehensive set of screen shots of all of the individual pages.
|Once AMT is enabled on the target system, point a browser to port 16992, and click "Log On..."|
|The username is always "admin". You'll set this password in the MEBx interface, using Ctrl-P just after BIOS post.|
|Here's the basic system status/overview.|
|The System Information page contains basic information about the system itself, including some of its capabilities.|
|The processor information page gives you the low down on your CPU. Search ark.intel.com for your Intel CPU type to see all of its capabilities.|
|Check your memory capacity, type, speed, etc.|
|And your disk type, size, and serial number.|
|NUCs don't have battery information, but my Thinkpad does.|
|An event log has some interesting early boot and debug information here.|
|Arguably the most useful page, here you can power a system on, off, or hard reboot it.|
|If you have wireless capability, you choose whether you want that enabled/disabled when the system is off, suspended, or hibernated.|
|Here you can configure the network settings. Unlike a BMC (Board Management Controller) on most server class hardware, which has its own dedicated interface, Intel AMT actually shares the network interface with the Operating System.|
|AMT actually supports IPv6 networking as well, though I haven't played with it yet.|
|Configure the hostname and Dynamic DNS here.|
|You can set up independent user accounts, if necessary.|
|And with a BIOS update, you can actually use Intel AMT over a wireless connection (if you have an Intel wireless card)|
The amttool command (provided by the amtterm package in Ubuntu) offers a nice command line interface into some of the functionality exposed by AMT. You need to export an environment variable, AMT_PASSWORD, and then you can get some remote information about the system:
kirkland@x230:~⟫ amttool 10.0.0.14 info ### AMT info on machine '10.0.0.14' ### AMT version: 7.1.20 Hostname: nuc1. Powerstate: S0 Remote Control Capabilities: IanaOemNumber 0 OemDefinedCapabilities IDER SOL BiosSetup BiosPause SpecialCommandsSupported PXE-boot HD-boot cd-boot SystemCapabilitiesSupported powercycle powerdown powerup reset SystemFirmwareCapabilities f800
You can also retrieve the networking information:
kirkland@x230:~⟫ amttool 10.0.0.14 netinfo Network Interface 0: DhcpEnabled true HardwareAddressDescription Wired0 InterfaceMode SHARED_MAC_ADDRESS LinkPolicy 31 MACAddress 00-aa-bb-cc-dd-ee DefaultGatewayAddress 10.0.0.1 LocalAddress 10.0.0.14 PrimaryDnsAddress 10.0.0.1 SecondaryDnsAddress 0.0.0.0 SubnetMask 255.255.255.0 Network Interface 1: DhcpEnabled true HardwareAddressDescription Wireless1 InterfaceMode SHARED_MAC_ADDRESS LinkPolicy 0 MACAddress ee-ff-aa-bb-cc-dd DefaultGatewayAddress 0.0.0.0 LocalAddress 0.0.0.0 PrimaryDnsAddress 0.0.0.0 SecondaryDnsAddress 0.0.0.0 SubnetMask 0.0.0.0
Far more handy than WoL alone, you can power up, power down, and power cycle the system.
kirkland@x230:~⟫ amttool 10.0.0.14 powerdown host x220., powerdown [y/N] ? y execute: powerdown result: pt_status: success
kirkland@x230:~⟫ amttool 10.0.0.14 powerup host x220., powerup [y/N] ? y execute: powerup result: pt_status: success
kirkland@x230:~⟫ amttool 10.0.0.14 powercycle host x220., powercycle [y/N] ? y execute: powercycle result: pt_status: success
I was a little disappointed that amttool's info command didn't provide nearly as much information as the web interface. However, I did find a fork of Gerd Hoffman's original Perl script in Sourceforge here. I don't know the upstream-ability of this code, but it worked very well for my part, and I'm considering sponsoring/merging it into Ubuntu for 14.04. Anyone have further experience with these enhancements?
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data BIOS ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'BIOS' (1 item): (data struct.ver. 1.0) Vendor: 'Intel Corp.' Version: 'RKPPT10H.86A.0028.2013.1016.1429' Release date: '10/16/2013' BIOS characteristics: 'PCI' 'BIOS upgradeable' 'BIOS shadowing allowed' 'Boot from CD' 'Selectable boot' 'EDD spec' 'int13h 5.25 in 1.2 mb floppy' 'int13h 3.5 in 720 kb floppy' 'int13h 3.5 in 2.88 mb floppy' 'int5h print screen services' 'int14h serial services' 'int17h printer services'
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data ComputerSystem ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'ComputerSystem' (1 item): (data struct.ver. 1.0) Manufacturer: ' ' Product: ' ' Version: ' ' Serial numb.: ' ' UUID: 7ae34e30-44ab-41b7-988f-d98c74ab383d
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data Baseboard ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'Baseboard' (1 item): (data struct.ver. 1.0) Manufacturer: 'Intel Corporation' Product: 'D53427RKE' Version: 'G87971-403' Serial numb.: '27XC63723G4' Asset tag: 'To be filled by O.E.M.' Replaceable: yes
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data Processor ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'Processor' (1 item): (data struct.ver. 1.0) ID: 0x4529f9eaac0f Max Socket Speed: 2800 MHz Current Speed: 1800 MHz Processor Status: Enabled Processor Type: Central Socket Populated: yes Processor family: 'Intel(R) Core(TM) i5 processor' Upgrade Information: [0x22] Socket Designation: 'CPU 1' Manufacturer: 'Intel(R) Corporation' Version: 'Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz'
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data MemoryModule ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'MemoryModule' (2 items): (* No memory device in the socket *) (data struct.ver. 1.0) Size: 8192 Mb Form Factor: 'SODIMM' Memory Type: 'DDR3' Memory Type Details:, 'Synchronous' Speed: 1333 MHz Manufacturer: '029E' Serial numb.: '123456789' Asset Tag: '9876543210' Part Number: 'GE86sTBF5emdppj '
kirkland@x230:/tmp⟫ ./amttool 10.0.0.37 hwasset data VproVerificationTable ## '10.0.0.37' :: AMT Hardware Asset Data for the asset 'VproVerificationTable' (1 item): (data struct.ver. 1.0) CPU: VMX=Enabled SMX=Enabled LT/TXT=Enabled VT-x=Enabled MCH: PCI Bus 0x00 / Dev 0x08 / Func 0x00 Dev Identification Number (DID): 0x0000 Capabilities: VT-d=NOT_Capable TXT=NOT_Capable Bit_50=Enabled Bit_52=Enabled Bit_56=Enabled ICH: PCI Bus 0x00 / Dev 0xf8 / Func 0x00 Dev Identification Number (DID): 0x1e56 ME: Enabled Intel_QST_FW=NOT_Supported Intel_ASF_FW=NOT_Supported Intel_AMT_FW=Supported Bit_13=Enabled Bit_14=Enabled Bit_15=Enabled ME FW ver. 8.1 hotfix 40 build 1416 TPM: Disabled TPM on board = NOT_Supported Network Devices: Wired NIC - PCI Bus 0x00 / Dev 0xc8 / Func 0x00 / DID 0x1502 BIOS supports setup screen for (can be editable): VT-d TXT supports VA extensions (ACPI Op region) with maximum ver. 2.6 SPI Flash has Platform Data region reserved.
On a different note, I recently sponsored a package, wsmancli, into Ubuntu Universe for Trusty, at the request of Kent Baxley (Canonical) and Jared Dominguez (Dell), which provides the wsman command. Jared writes more about it here in this Dell technical post. With Kent's help, I did manage get wsman to remotely power on a system. I must say that it's a bit less user friendly than the equivalent amttool functionality above...
kirkland@x230:~⟫ wsman invoke -a RequestPowerStateChange -J request.xml http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_PowerManagementService?SystemCreationClassName="CIM_ComputerSystem",SystemName="Intel(r)AMT",CreationClassName="CIM_PowerManagementService",Name="Intel(r) AMT Power Management Service" --port 16992 -h 10.0.0.14 --username admin -p "ABC123abc123#" -V -v
I'm really enjoying the ability to remotely administer these systems. And I'm really, really looking forward to the day when I can use MAAS to provision these systems!