USB Device Detection Regression on X8 Bottom Port After Moving from Kirkstone to Scarthgap (Apalis iMX8QP + Ixora)

Hello Toradex team,

I’m reopening this topic because the issue described in the previous post
SuperSpeed USB storage device not detected on X8 (Bottom) with Apalis iMX8QM
doesn’t fully explain the behavior we’re observing.

Hardware setup

  • Module: Apalis iMX8QP v1.1E (also tested with v1.0B)
  • Carrier: Ixora v1.2A (also tested with v1.3A)
  • Ports: X8 Top (USB 3.0 SuperSpeed) and X8 Bottom (USB 2.0 High Speed)
  • Devices tested: Various USB 2.0 and 3.0 storage devices

Also to be notted, the apalis module we are using are iMX8QP v1.1E without wifi module and iMX8QP v1.0B with wifi module.

Software setup

  • Previously: Yocto Kirkstone based Toradex BSP (Boot2Qt)
    • Both X8 Top and Bottom ports detected USB sticks correctly
    • Top port enumerated SuperSpeed devices (as expected)
    • Bottom port enumerated High-Speed devices (also as expected)
  • Now: Yocto Scarthgap based Toradex BSP (Boot2Qt)
    • X8 Top still works correctly (SuperSpeed)
    • X8 Bottom no longer detects any USB device at all

What we already know
According to the Ixora documentation and prior responses, the X8 Bottom port is physically USB 2.0-only (shared with USB_OTG). That’s clear and expected.
However, this doesn’t explain the regression — since under Kirkstone, USB 2.0 devices and USB 3.0 sticks (enumerating as HS) were both detected fine, while under Scarthgap they are not detected at all.

Why this might be software-related

  • The behavior changed only after migrating to Scarthgap (same hardware combination).
  • The issue appears specifically on Apalis iMX8QP v1.1E + Ixora v1.2A (other combinations might not be affected, possibly due to wifi module presence?).

Thanks in advance for your help in investigating this regression.

Best regards,

I am also joining the demsg related to usb detection on kirkstone and scarthgap branches
apalis-imx8_usb-detection (2.9 KB)

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


USB Configuration on Ixora Carrier Board

Based on the Ixora V1.2 and V1.3 datasheets, I can confirm your understanding of the hardware configuration. The X8 connector is a stacked USB 3.0 Type-A connector where:

  • X8 Top (U1-U9): Connected to USBH4 interface (USB 3.0 SuperSpeed) (1)(2)
  • X8 Bottom (L1-L9): Connected to USBO1 interface (USB 2.0 High Speed shared with OTG) (1)(2)

Hardware Configuration Details

The Ixora V1.2 datasheet confirms that the bottom part of connector X8 uses the USBO1 interface, which can be controlled via jumper JP2 (2):

  • JP2 Open: X8 bottom is not powered, X9 (Micro-AB) is used as OTG
  • JP2 Closed: Both X8 bottom and X9 are configured as HOST only

LED3 indicates when VCC_USBO1 voltage is enabled, confirming the bottom port is powered (2).

BSP Version Information

According to the BSP documentation, there are significant differences between the versions you’re using (3):

  • Kirkstone (BSP 6.0): Based on Yocto Project 4.0 LTS
  • Scarthgap (BSP 7.0): Based on Yocto Project 5.0 LTS

Assembly Options Consideration

The Ixora datasheets document assembly options that affect USB routing. By default, the configuration connects (1)(2):

  • USBH3 interface to USB Host connector (X7)
  • USBH2 interface to Mini PCIe Connector (X25)

However, assembly resistors can be modified to change this routing. The specific resistors mentioned are R96, R103, R118, R119 and R50, R69, R120, R126 (1)(2).

Potential Investigation Areas

Given that this is a regression from Kirkstone to Scarthgap on the same hardware, the issue is likely related to:

  1. Device Tree Changes: USB controller or hub initialization differences between BSP versions
  2. Power Management: Changes in USB power control between kernel versions
  3. Driver Updates: USB subsystem changes in the newer BSP

The fact that you observe this specifically with certain hardware combinations suggests it might be related to timing or initialization sequences that changed between the BSP versions.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hello @Romain.Donze !

Thank you for reaching out to Toradex support.

Did you have a chance to test the points mentioned under the “Hardware Configuration Details” section of the assistant’s reply, specifically:
Whether JP2 is set correctly (closed) so that the X8 bottom port is configured as HOST, and whether LED3 turns on when the board is powered, indicating that VCC_USBO1 (VBUS) is being enabled?
These two checks will help confirm if the port is physically being powered as expected.
Once you verify those, please let us know the results, as that will help determine whether the issue is on the power path or purely software/device-tree related.

Hi @joaom.tx,

Thanks for the reply.
Yes JP2 is closed and LED3 is turned on.

The process I followed to produce this bug was simply to install my kirkstone image with TEZI (yes I had to open JP2 to do so but I closed it afterward). As said with kirkstone I am able to detect USB devices on X8 bottom.

Then with TEZI I installed my scarthgap image (managing correctly JP2 as well) and then I can’t detect USB devices on X8 bottom.

If after that I reinstall my kirkstone image it works again so I think it is purely software related. I also tryed to disable my custom dto but it does not change.

As a reminder I only encounter this issue with apalis-imx8qp V1.1D (NON WB)

Regards,
Romain

This issue might be because of a device tree setup then. Could you please share the following so we can narrow down the cause?

  1. The Device Tree file that Scarthgap loads (from the boot log).
  2. The output of:
    lsusb -t
    and
    dmesg -w while hot-plugging a USB 2.0 stick into X8 bottom.

Hi @joaom.tx

First of all I noticed that the issue is only appearing with a USB3.0 stick, I just tested with USB2.0 stick and it works.

So here are the relevant outputs for both v1.0B and v1.1E under both kirkstone and scarthgap version

apalis-imx8qp_WB_v1.0B_kirkstone (2.6 KB)
apalis-imx8qp_v1.1E_kirkstone (2.3 KB)
apalis-imx8qp_WB_v1.0B_scarthgap (7.6 KB)
apalis-imx8qp_v1.1E_scarthgap (4.3 KB)

Notice that in scarthgap I am loading two dto for poweroff and reset (they are talked about here: GPIO Power-Off Overlay Not Working After Migration to Scarthgap (Apalis iMX8QP)) And it doesn’t change anything if I remove them.

Also for v1.0B I had to manually create device-tree in my yocto meta-layer because with scarthgap imx8qp-v1.0B does not fallback to imx8qm it tries to load imx8qp-apalis-eval.dtb by default, here is the content of recipes-kernel/linux in my meta-layer:
linux.zip (7.5 KB)

Based on those findings I think the problem comes from the fact that x8 bottom port is not falling back to high-speed usb when super-speed usb is plugged in but it simply ignores it. Wich in my opinion is a flaw. Especially because it only happens in this specific situation (imx8 v1.1E scarthgap)