
Features AMI UEFI firmware
In one of the previous publications [1], we raised this seemingly obvious question: “How to make sure that the USB flash drive works in USB 3.0?” The voices in the discussion sarcastically noted that that article lacked the “sadomaso” tag, but then, as if frightened of their own ego, erased this thought from our consciousness.
But this thought already hurt the fragile minds of the experimenters. There was a desire to check the availability of USB 3.0 for any connected device at the start-up phase (for example, in the UEFI Shell) before the operating system was launched. To begin with, a small utility called CheckUSB was written (which, however, is so far designed only to work with some implementations of the 8th version of Intel chipsets).

Fig 1 .Experiments with the CheckUSB utility on the ASUS T300LA laptop
In the approach to the mobile platform, it turned out that in some cases, upon rebooting, the laptop’s UEFI firmware does not fully initialize the USB subsystem, leaving some of the work of the operating system.

Fig 2 . XHCI Pre-Boot Mode option in UEFI firmware settings for ASUS T300LA laptop
For example, if the initial state of the xHCI Pre-Boot Mode option is set to Disable in CMOS Setup, replace it with Smart Auto, and without loading the operating system, run the CheckUSB utility, then we see the list of devices connected to the xHCI controller is empty. This means that the EHCI controller is used to service the connected USB devices.

Fig 3 .Connecting USB devices to the Enhanced Host Controller Interface on an ASUS N750JK laptop before starting Windows
So, if you boot into UEFI right after turning on without starting Windows, we get:
At the same time, the mask values show that the operating system has the right to switch connections to xHCI service:
The list of devices is empty, because we only display xHCI registers, and devices are switched to EHCI service using RMH. Description of bit fields is available in the article “Diagnostic utility CheckUSB” [2], [3].
If you restart after restarting the operating system, all devices are correctly connected to the xHCI controller.

Fig 4 . Connecting USB devices to the eXtensible Host Controller Interface on the ASUS N750JK laptop when loading after Windows
The port access control logic “remembers” the state that occurred before the reboot:
Recall that the number of external USB3 ports on the ASUS N750JK platform under study is 4.
But this thought already hurt the fragile minds of the experimenters. There was a desire to check the availability of USB 3.0 for any connected device at the start-up phase (for example, in the UEFI Shell) before the operating system was launched. To begin with, a small utility called CheckUSB was written (which, however, is so far designed only to work with some implementations of the 8th version of Intel chipsets).

Fig 1 .Experiments with the CheckUSB utility on the ASUS T300LA laptop
In the approach to the mobile platform, it turned out that in some cases, upon rebooting, the laptop’s UEFI firmware does not fully initialize the USB subsystem, leaving some of the work of the operating system.

Fig 2 . XHCI Pre-Boot Mode option in UEFI firmware settings for ASUS T300LA laptop
For example, if the initial state of the xHCI Pre-Boot Mode option is set to Disable in CMOS Setup, replace it with Smart Auto, and without loading the operating system, run the CheckUSB utility, then we see the list of devices connected to the xHCI controller is empty. This means that the EHCI controller is used to service the connected USB devices.

Fig 3 .Connecting USB devices to the Enhanced Host Controller Interface on an ASUS N750JK laptop before starting Windows
So, if you boot into UEFI right after turning on without starting Windows, we get:
- USB 2.0 Port Routing = 0, 14 USB2 connections connected to EHCI
- USB 3.0 Port SuperSpeed Enable = 0, 4 USB3 Connections Disabled
At the same time, the mask values show that the operating system has the right to switch connections to xHCI service:
- USB 2.0 Port Routing Mask = 00003FFFh
- USB 3.0 Port Routing Mask = 0000000Fh
The list of devices is empty, because we only display xHCI registers, and devices are switched to EHCI service using RMH. Description of bit fields is available in the article “Diagnostic utility CheckUSB” [2], [3].
If you restart after restarting the operating system, all devices are correctly connected to the xHCI controller.

Fig 4 . Connecting USB devices to the eXtensible Host Controller Interface on the ASUS N750JK laptop when loading after Windows
The port access control logic “remembers” the state that occurred before the reboot:
- USB 2.0 Port Routing = 03FFFh, 14 USB2 connections connected to xHCI USB2 subsystem
- USB 3.0 Port SuperSpeed Enable = 0Fh, 4 USB3 connections can use SuperSpeed mode
Recall that the number of external USB3 ports on the ASUS N750JK platform under study is 4.