Troubleshooting USB Drive Detection Issues in Intel EFI Shell for Firmware Updates


2 views

When working with Intel server boards like the S3420GPLC, firmware updates often require booting into the EFI shell environment. The standard procedure involves:

1. Copying update files to FAT32-formatted USB
2. Booting to EFI shell
3. Mounting the USB device
4. Executing startup.nsh

However, many technicians encounter frustrating scenarios where USB devices either don't appear in map -r listings or appear but remain unreadable.

The EFI shell's USB handling differs significantly from OS environments. Key observations from multiple cases:

  • Only specific USB controller modes are supported (UHCI/EHCI, not xHCI)
  • Partition alignment affects detection (MBR vs GPT)
  • Filesystem quirks matter (FAT32 with specific cluster sizes)

Try this sequence when encountering detection issues:

map -r
disconnect -r
reconnect -r
map -r

For devices that appear but can't be read:

mount blk0 fs0
ls fs0:\
if error persists:
  vol -b blk0
  mkdir fs0
  mount blk0 fs0 -b [LBA from vol command]

Critical settings that affect USB behavior in EFI shell:

Setting Recommended Value
USB Legacy Support Enabled
xHCI Mode Disabled or Auto
EHCI Hand-off Enabled

When standard methods fail, consider:

  1. Using different USB ports (try rear ports first)
  2. Creating minimal FAT16 partitions (under 2GB)
  3. Testing with USB 2.0 (not 3.0) flash drives
  4. Burning the update files to CD/DVD instead

For persistent cases, gather diagnostic data:

devices -b       # List all devices
drivers -b       # Show loaded drivers
dh -d blk0       # Detailed block device info

Remember that EFI shell versions matter - older versions (v1.x) handle USB differently than v2.x.


When attempting BIOS/BMC updates on Intel S3420GPLC motherboards through the EFI shell, USB storage devices often fail to mount properly. The standard procedure requires:

map -r
fs0:
startup.nsh

But instead we encounter either missing drives or unreadable filesystems despite using FAT32-formatted media.

First verify USB controller initialization:

drivers
devices

For detected but unreadable block devices (like blk0):

vol -b blk0
connect -r blk0

When standard mounting fails, try these alternatives:

mount -b blk0 -fs fat fs0:
mount blk0 fs0 -o rw,force

If you get partition table errors:

diskinfo blk0
diskpart -l blk0

The S3420GPLC has specific port behaviors:

  • Try all USB 2.0 ports (blue) before USB 3.0
  • Rear panel ports often initialize before front headers
  • Disable XHCI handoff in BIOS if available

If USB continues failing, consider:

# Network boot alternative
ifconfig -s eth0
dhcp
wget http://server/update.pkg

Or via IPMI:

ipmitool -I lanplus -H BMC_IP -U admin -P password hpm update force filename.bin

From field reports, these combinations work reliably:

Device Capacity Format
SanDisk Cruzer Fit 4GB FAT32 (4096 byte clusters)
Kingston DataTraveler 8GB FAT32 (MBR, single partition)

When drives appear as blkX but won't mount:

# Dump first sector to verify signature
hexdump blk0 -n 512

Look for "FAT32" string at offset 0x52 or boot signature 0xAA55 at 0x1FE.