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.

    XHCI Pre-Boot Mode option in UEFI firmware settings
    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.
    USB Routing to EHCI
    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.
    USB Routing to xHCI
    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.


    1. How to make sure that the USB flash drive works in USB 3.0?
    2. Diagnostic utility CheckUSB
    3. How to check USB3 mode?

    Also popular now: