Skip to content

IQ-9075: Ethernet not working #3200

Closed

Description

I tried to build and test the new image for IQ-9075-EVK based on an open source boot sequence and FIT image: meta-qcom/ci/iq-9075-evk-open-fw-spl.yml
but I can't get the Ethernet port to work.

Bellow the step I use to reproduce the issue:

# I am building in a ubuntu 24.04 docker.
# Get source
mkdir qualcomm && cd qualcomm
git clone https://github.com/qualcomm-linux/meta-qcom.git
cd meta-qcom
git rev-parse HEAD
# cf53a39cc03ba0214dfdddd4ac3b239956da847c
cd ..

# Build yocto image
TARGET="meta-qcom/ci/iq-9075-evk-open-fw-spl.yml:meta-qcom/ci/kernel-fit-image.yml:meta-qcom/ci/base.lock.yml"
kas shell ${TARGET} --update
bitbake -c build core-image-base

By default ethernet is not detected, because kernel modules are missing.
I tried to add:

diff --git a/recipes-bsp/packagegroups/packagegroup-machine-essential.bb b/recipes-bsp/packagegroups/packagegroup-machine-essential.bb
index cacc9aa7..e6ab4cc3 100644
--- a/recipes-bsp/packagegroups/packagegroup-machine-essential.bb
+++ b/recipes-bsp/packagegroups/packagegroup-machine-essential.bb
@@ -221,12 +221,14 @@ RRECOMMENDS:${PN}-qcom-qcs9100-soc += " \
     ${PN}-board-generic \
     ${PN}-qcom-generic \
     kernel-module-ath11k-pci \
+    kernel-module-at24 \
     kernel-module-camcc-sa8775p \
     kernel-module-dispcc0-sa8775p \
     kernel-module-dispcc1-sa8775p \
     kernel-module-gpucc-sa8775p \
     kernel-module-phy-qcom-sgmii-eth \
     kernel-module-pwrseq-qcom-wcn \
+    kernel-module-qca808x \
     kernel-module-stmmac-platform \
     kernel-module-videocc-sa8775p \

But despite everything, the cable is not being detected.

Issue: The ethernet interface always remains in "NO-CARRIER" state even if ("working" ethernet) cable is plugged.

root@iq-9075-evk-open-fw-spl:~# ip addr add 192.168.0.2/24 dev end0
root@iq-9075-evk-open-fw-spl:~# ip a show end0
2: end0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq qlen 1000
    link/ether 38:43:3a:46:44:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 scope global end0
       valid_lft forever preferred_lft forever

Activity

  1. lumag commented on Sep 21, 2026

    @lumag
    Contributor
  2. ricardosalveti commented on Sep 22, 2026

    @ricardosalveti
    Contributor

    Thanks, the missing modules is indeed an issue that shows up with nodistro (or any other distro that is not including the kernel-modules meta package), and it is fixed by #3208.

    I was also able to confirm that there is an issue with the link mode in 7.2 (works fine on 6.18 but then you won't be able to boot with the SPL flow until qualcomm-linux/kernel#1129 gets merged), and it seems that the problem is that it only advertises 2500baseT/Full, which would only work if you have a compatible network hardware.

    After manually forcing 1000 it was able to bring the link and work as expected, try ethtool -s end0 speed 1000 duplex full autoneg off.

    Meanwhile I'm checking what might be missing in 7.2.

  3. ricardosalveti commented on Sep 22, 2026

    @ricardosalveti
    Contributor

    The missing patch: https://lore.kernel.org/netdev/20250914-qca808x_rate_match-v1-1-0f9e6a331c3b@oss.qualcomm.com/ (only available in 6.18).

    And why it isn't upstream yet:

    netdev marked it changes-requested (patchwork 14230857), no v2 was ever posted. Russell King's objection: the QCA8081 doesn't rate-match at all — it switches its SerDes between SGMII (≤1G) and 2500BASE-X (2.5G), so the patch only makes ethtool claim the lower speeds. The reason it nonetheless works on 6.18 (and would on 7.x) is that dwmac-qcom-ethqos already reprograms the SerDes per negotiated speed (ethqos_fix_mac_speed_sgmii + ethqos_pcs_set_inband), so in practice the lower speeds link fine — Ayaan confirmed 1G and 2.5G both worked in the thread.

    The upstream-acceptable fix Russell pointed at is on the MAC side: have dwmac-qcom-ethqos register plat->get_interfaces advertising both SGMII and 2500BASE-X, so phylink validates both and lets the PHY negotiate all speeds. That hook has existed in stmmac since ca732e990fc8 (May 2025, in 7.2 and 7.3) and three other glue drivers use it — ethqos just never set it. Ayaan reported a "dirty version" of exactly that worked on both speeds. Nothing has been posted since.

  4. ricardosalveti commented on Sep 22, 2026

    @ricardosalveti
    Contributor

    The kernel issue: qualcomm-linux/kernel#1156

  5. ubicore commented on Sep 23, 2026

    @ubicore

    I used a wrong account to create this issue, now I am working only from this one.
    Sorry for the confusion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions