This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] AM65x: How to enable PRU Ethernet in Linux SDK 11.2

Other Parts Discussed in Thread: TMDX654IDKEVM

I want to test PRU Ethernet on the AM65x IDK EVM (TMDX654IDKEVM).

I am using Linux SDK 11.2. I am booting the default filesystem image, tisdk-default-image-rt-am65xx-evm-11.02.05.02.rootfs.wic.xz. However, the PRU Ethernet firmware is not loaded into the PRU cores, and the Linux PRU Ethernet driver is not running. What is going on?

This FAQ applies for both Linux and RT Linux.

 root@am65xx-evm:~# dmesg | grep -i pru
[ 8.271861] remoteproc remoteproc1: b034000.pru is available
[ 8.284042] remoteproc remoteproc3: b00a000.txpru is available
[ 8.284862] remoteproc remoteproc4: b038000.pru is available
[ 8.286013] remoteproc remoteproc6: b00c000.txpru is available
[ 8.288915] remoteproc remoteproc7: b134000.pru is available
[ 8.294920] remoteproc remoteproc9: b10a000.txpru is available
[ 8.300325] remoteproc remoteproc10: b138000.pru is available
[ 8.309337] remoteproc remoteproc12: b10c000.txpru is available
[ 8.316146] remoteproc remoteproc13: b234000.pru is available
[ 8.322362] remoteproc remoteproc15: b20a000.txpru is available
[ 8.337248] remoteproc remoteproc16: b238000.pru is available
[ 8.362390] remoteproc remoteproc18: b20c000.txpru is available  

root@am65xx-evm:~# ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 40:2e:71:3f:3e:45 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 90 bytes 7514 (7.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 90 bytes 7514 (7.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • The problem

    There are 2 issues:

    1) ICSSG2 Ethernet nodes are moved from k3-am654-base-board.dts to k3-am654-icssg2.dtso in kernel 6.12

    2) Uboot name_overlay argument does not seem to be updated from older kernel versions, when devicetree files were under /boot/dtb/ instead of under /boot/dtb/ti/

    These issues cause uboot to fail to find the correct devicetree overlay files:

    U-Boot 2025.01-00718-ga44465cad8a3 (Nov 14 2025 - 10:48:56 +0000)
    
    SoC:   UNKNOWN
    Model: Texas Instruments AM654 Base Board
    Board: AM6-COMPROCEVM rev B
    DRAM:  2 GiB (total 4 GiB)
    Core:  128 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@4f80000: 0, mmc@4fa0000: 1
    Loading Environment from MMC... *** Warning - bad CRC, using default environment
    
    Reading from MMC(0)... In:    serial@2800000
    ...
    Failed to load '/boot/dtb/k3-am654-idk.dtbo'
    Failed to load '/boot/dtb/k3-am654-pcie-usb2.dtbo'
    

    The fix 

    Please update the uEnv.txt file in the SD card's boot partition like this:

    name_overlays=ti/k3-am654-icssg2.dtbo ti/k3-am654-idk.dtbo ti/k3-am654-pcie-usb2.dtbo

  • After applying those changes, the devicetree overlays are properly applied.

    This is the observed output when the board is booted up with an Ethernet cable plugged into a PRU Ethernet port:

    [    9.484832] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: dual EMAC mode
             Starting Telnet Server...
    [    9.540374] TI DP83867 b032400.mdio:00: attached PHY driver (mii_bus:phy_addr=b032400.mdio:00, irq=POLL)
    [    9.555355] TI DP83867 b032400.mdio:03: attached PHY driver (mii_bus:phy_addr=b032400.mdio:03, irq=POLL)
    [    9.555403] icssg-prueth icssg0-eth: TI PRU ethernet driver initialized: dual EMAC mode
    [    9.574427] TI DP83867 b232400.mdio:00: attached PHY driver (mii_bus:phy_addr=b232400.mdio:00, irq=POLL)
    [    9.606568] TI DP83867 b232400.mdio:03: attached PHY driver (mii_bus:phy_addr=b232400.mdio:03, irq=POLL)
    [    9.606617] icssg-prueth icssg2-eth: TI PRU ethernet driver initialized: dual EMAC mode
    [  OK  ] Finished IPv6 Packet Filtering Framework.
    [  OK  ] Finished IPv4 Packet Filtering Framework.
    [  OK  ] Finished Telnet Server.
    [  OK  ] Started Telephony service.
    ...
    [   10.945277] remoteproc remoteproc17: powering up b134000.pru
    [   10.947313] remoteproc remoteproc17: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 39848
    [   10.947354] remoteproc remoteproc17: unsupported resource 5
    [   10.947387] remoteproc remoteproc17: remote processor b134000.pru is now up
    [   10.947432] remoteproc remoteproc18: powering up b104000.rtu
    [   10.949895] remoteproc remoteproc18: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 31576
    [   10.949947] remoteproc remoteproc18: remote processor b104000.rtu is now up
    [   10.949988] remoteproc remoteproc3: powering up b10a000.txpru
    [   10.952682] remoteproc remoteproc3: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 39340
    [   10.952745] remoteproc remoteproc3: remote processor b10a000.txpru is now up
    [   10.952788] remoteproc remoteproc15: powering up b138000.pru
    [   10.959155] remoteproc remoteproc15: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 40008
    [   10.959198] remoteproc remoteproc15: unsupported resource 5
    [   10.959233] remoteproc remoteproc15: remote processor b138000.pru is now up
    [   10.959280] remoteproc remoteproc16: powering up b106000.rtu
    [   10.963083] remoteproc remoteproc16: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30812
    [   10.963153] remoteproc remoteproc16: remote processor b106000.rtu is now up
    [   10.963202] remoteproc remoteproc4: powering up b10c000.txpru
    [   10.966777] remoteproc remoteproc4: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 37828
    [   10.966850] remoteproc remoteproc4: remote processor b10c000.txpru is now up
    [   11.166688] remoteproc remoteproc9: powering up b034000.pru
    [   11.166943] remoteproc remoteproc9: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 39848
    [   11.166977] remoteproc remoteproc9: unsupported resource 5
    [   11.167013] remoteproc remoteproc9: remote processor b034000.pru is now up
    [   11.167055] remoteproc remoteproc10: powering up b004000.rtu
    [   11.167204] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 31576
    [   11.167241] remoteproc remoteproc10: remote processor b004000.rtu is now up
    [   11.167265] remoteproc remoteproc1: powering up b00a000.txpru
    [   11.167416] remoteproc remoteproc1: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 39340
    [   11.167460] remoteproc remoteproc1: remote processor b00a000.txpru is now up
    [   11.168592] remoteproc remoteproc7: powering up b038000.pru
    [   11.168798] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 40008
    [   11.168828] remoteproc remoteproc7: unsupported resource 5
    [   11.168861] remoteproc remoteproc7: remote processor b038000.pru is now up
    [   11.168891] remoteproc remoteproc8: powering up b006000.rtu
    [   11.169020] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30812
    [   11.169055] remoteproc remoteproc8: remote processor b006000.rtu is now up
    [   11.169083] remoteproc remoteproc2: powering up b00c000.txpru
    [   11.169220] remoteproc remoteproc2: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 37828
    [   11.169261] remoteproc remoteproc2: remote processor b00c000.txpru is now up
    [   11.315867] remoteproc remoteproc11: powering up b234000.pru
    [   11.316091] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 39848
    [   11.316125] remoteproc remoteproc11: unsupported resource 5
    [   11.316159] remoteproc remoteproc11: remote processor b234000.pru is now up
    [   11.316196] remoteproc remoteproc12: powering up b204000.rtu
    [   11.316318] remoteproc remoteproc12: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 31576
    [   11.316352] remoteproc remoteproc12: remote processor b204000.rtu is now up
    [   11.316378] remoteproc remoteproc5: powering up b20a000.txpru
    [   11.318622] remoteproc remoteproc5: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 39340
    [   11.318693] remoteproc remoteproc5: remote processor b20a000.txpru is now up
    [   11.318741] remoteproc remoteproc13: powering up b238000.pru
    [   11.318912] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 40008
    [   11.318936] remoteproc remoteproc13: unsupported resource 5
    [   11.318967] remoteproc remoteproc13: remote processor b238000.pru is now up
    [   11.318993] remoteproc remoteproc14: powering up b206000.rtu
    [   11.319116] remoteproc remoteproc14: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30812
    [   11.319151] remoteproc remoteproc14: remote processor b206000.rtu is now up
    [   11.319176] remoteproc remoteproc6: powering up b20c000.txpru
    [   11.319307] remoteproc remoteproc6: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 37828
    [   11.319346] remoteproc remoteproc6: remote processor b20c000.txpru is now up
    ...
    [   14.503562] icssg-prueth icssg2-eth eth6: Link is Up - 1Gbps/Full - flow control off

  • What if I am using the AM65x EVM, without the IDK daughter card attached to the board? 

    Instead, modify the uEnv.txt file like this:
    name_overlays=ti/k3-am654-icssg2.dtbo ti/k3-am654-pcie-usb2.dtbo

    The uEnv.txt file in the previous response attempts to load the IDK daughter card devicetree file overlay. If you try to load the .dtbo file for the IDK daughter card when the daughter card is not plugged into the base EVM, then you can see errors like this:

    [    9.700348] icssg-prueth icssg1-eth: port 1: using random MAC addr: 32:52:08:7a:5f:59
    [    9.703892] icssg-prueth icssg1-eth: port 2: using random MAC addr: a2:1b:f6:a1:f0:cf
    [    9.713469] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@0
    [    9.713493] icssg-prueth icssg1-eth: can't connect to MII0 PHY, error --19
    [    9.719689] Bluetooth: Core ver 2.22
    [    9.719883] NET: Registered PF_BLUETOOTH protocol family
    [    9.719891] Bluetooth: HCI device and connection manager initialized
    [    9.719912] Bluetooth: HCI socket layer initialized
    [    9.721086] Bluetooth: L2CAP socket layer initialized
    [    9.721128] Bluetooth: SCO socket layer initialized
    [  OK  ] Started Avahi mDNS/DNS-SD Stack[    9.762170] ------------[ cut here ]------------
    .
    [    9.762189] WARNING: CPU: 1 PID: 12 at /net/devlink/core.c:382 0xffff8000809ab170
    [    9.762205] Modules linked in: bluetooth ecdh_generic ecc rfkill irq_pruss_intc ti_am335x_adc kfifo_buf icssg_prueth sch_taprio sch_
    mqprio_lib hsr icssg icss_iep pru_rproc crct10dif_ce omap_mailbox omap_hwspinlock phy_can_transceiver at24 ti_k3_r5_remoteproc m_can_pl
    atform k3_bandgap m_can can_dev rti_wdt ti_am335x_tscadc pruss pci_endpoint_test pvrsrvkm(O) sa2ul authenc phy_omap_usb2 pwm_tiecap spi
    _omap2_mcspi cryptodev(O) fuse drm drm_panel_orientation_quirks backlight ipv6
    [    9.762353] CPU: 1 UID: 0 PID: 12 Comm: kworker/u16:0 Tainted: G           O       6.12.49-ti-rt-g1a86d36433ea #1
    [    9.762368] Tainted: [O]=OOT_MODULE
    [    9.762373] Hardware name: Texas Instruments AM654 Base Board (DT)
    [    9.762379] Workqueue: events_unbound 0xffff8000805a8530
    [    9.762388] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    9.762401] pc : 0xffff8000809ab170
    [    9.762405] lr : 0xffff8000809ab118
    [    9.762409] sp : ffff00080015ba90
    [    9.762413] x29: ffff00080015ba90 x28: 00000000ffffffed x27: ffff00080703f918
    [    9.762427] x26: ffff00080703f918 x25: ffff00080703f8c0 x24: ffff00087ffa4ee8
    [    9.762440] x23: ffff000808889958 x22: ffff00087ffa52a0 x21: 00000000ffffffed
    [    9.762453] x20: ffff80008102e020 x19: ffff000803f0a000 x18: 0000000000000000
    [    9.762466] x17: ffff8007ff1d7000 x16: ffff00087ff4f040 x15: 0000000000000002
    [    9.762478] x14: 0000000000000040 x13: ffff0008000dab40 x12: 0000000000000000
    [    9.762492] x11: 00000000000000c0 x10: 0000000000000002 x9 : 0000000000000001
    [    9.762504] x8 : 0000000000000238 x7 : 0000000000000000 x6 : 0000000000000046
    [    9.762516] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000001
    [    9.762528] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [    9.762540] Call trace:
    [    9.762544]  0xffff8000809ab170
    [    9.762549]  0xffff8000809ab19c
    [    9.762554]  0xffff8000793118d4
    [    9.762557]  0xffff80007931218c
    [    9.762561]  0xffff8000805ab974
    [    9.762565]  0xffff8000805a9084
    [    9.762569]  0xffff8000805a92d4
    [    9.762573]  0xffff8000805a9464
    [    9.762577]  0xffff8000805a95ec
    [    9.762581]  0xffff8000805a7168
    [    9.762584]  0xffff8000805a9948
    [    9.762588]  0xffff8000805a9b94
    [    9.762593]  0xffff8000805a80a8
    [    9.762597]  0xffff8000805a85b8
    [    9.762601]  0xffff800080053b60
    [    9.762605]  0xffff8000800543f8
    [    9.762609]  0xffff80008005c648
    [    9.762613]  0xffff800080014864
    [    9.762619] ---[ end trace 0000000000000000 ]---
    [    9.762685] ------------[ cut here ]------------
    [    9.762688] WARNING: CPU: 1 PID: 12 at /net/devlink/dev.c:205 0xffff8000809ad680
    [    9.762697] Modules linked in: bluetooth ecdh_generic ecc rfkill irq_pruss_intc ti_am335x_adc kfifo_buf icssg_prueth sch_taprio sch_
    mqprio_lib hsr icssg icss_iep pru_rproc crct10dif_ce omap_mailbox omap_hwspinlock phy_can_transceiver at24 ti_k3_r5_remoteproc m_can_pl
    atform k3_bandgap m_can can_dev rti_wdt ti_am335x_tscadc pruss pci_endpoint_test pvrsrvkm(O) sa2ul authenc phy_omap_usb2 pwm_tiecap spi
    _omap2_mcspi cryptodev(O) fuse drm drm_panel_orientation_quirks backlight ipv6
    [    9.762806] CPU: 1 UID: 0 PID: 12 Comm: kworker/u16:0 Tainted: G        W  O       6.12.49-ti-rt-g1a86d36433ea #1
    [    9.762820] Tainted: [W]=WARN, [O]=OOT_MODULE
    [    9.762823] Hardware name: Texas Instruments AM654 Base Board (DT)
    [    9.762828] Workqueue: events_unbound 0xffff8000805a8530
    [    9.762835] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    9.762846] pc : 0xffff8000809ad680
    [    9.762850] lr : 0xffff8000809ad570
    [    9.762853] sp : ffff00080015ba10
    [    9.762857] x29: ffff00080015ba10 x28: 00000000ffffffed x27: ffff00080703f918
    [    9.762870] x26: ffff00080703f918 x25: ffff00080703f8c0 x24: ffff00087ffa4ee8
    [    9.762883] x23: ffff000808889958 x22: 0000000000000004 x21: 00000000ffffffed
    [    9.762895] x20: ffff80008102e020 x19: ffff000803f0a000 x18: 0000000000000000
    [    9.762908] x17: ffff8007ff1d7000 x16: ffff00087ff4f040 x15: 0000000000000002
    [    9.762921] x14: 0000000000000040 x13: ffff0008000dab40 x12: 0000000000000000
    [    9.762933] x11: 00000000000000c0 x10: 0000000000000002 x9 : 0000000000000001
    [    9.762945] x8 : 0000000000000000 x7 : ffffffffffffffff x6 : 0000000000000046
    [    9.762957] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000001
    [    9.762969] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [    9.762981] Call trace:
    [    9.762984]  0xffff8000809ad680
    [    9.762988]  0xffff8000809ad8dc
    [    9.762992]  0xffff8000809ab124
    [    9.762996]  0xffff8000809ab19c
    [    9.763000]  0xffff8000793118d4
    [    9.763004]  0xffff80007931218c
    [    9.763008]  0xffff8000805ab974
    [    9.763011]  0xffff8000805a9084
    [    9.763015]  0xffff8000805a92d4
    [    9.763019]  0xffff8000805a9464
    [    9.763023]  0xffff8000805a95ec
    [    9.763027]  0xffff8000805a7168
    [    9.763030]  0xffff8000805a9948
    [    9.763034]  0xffff8000805a9b94
    [    9.763038]  0xffff8000805a80a8
    [    9.763041]  0xffff8000805a85b8
    [    9.763045]  0xffff800080053b60
    [    9.763049]  0xffff8000800543f8
    [    9.763053]  0xffff80008005c648
    [    9.763056]  0xffff800080014864
    [    9.763060] ---[ end trace 0000000000000000 ]---
    [    9.818110] m_can_platform 40568000.can mcu_mcan1: renamed from can1
    [    9.857363] icssg-prueth icssg0-eth: port 1: using random MAC addr: 5a:ff:13:fe:1e:5c
    [    9.880412] icssg-prueth icssg0-eth: port 2: using random MAC addr: 8e:25:2a:f5:29:91
    [    9.894667] icssg-prueth icssg0-eth: couldn't connect to phy ethernet-phy@0
    [    9.894692] icssg-prueth icssg0-eth: can't connect to MII0 PHY, error --19
    [   10.076044] ------------[ cut here ]------------
    [   10.076062] WARNING: CPU: 1 PID: 12 at /net/devlink/dev.c:205 0xffff8000809ad680
    [   10.076074] Modules linked in: bluetooth ecdh_generic ecc rfkill irq_pruss_intc ti_am335x_adc kfifo_buf icssg_prueth sch_taprio sch$
    mqprio_lib hsr icssg icss_iep pru_rproc crct10dif_ce omap_mailbox omap_hwspinlock phy_can_transceiver at24 ti_k3_r5_remoteproc m_can_pl
    atform k3_bandgap m_can can_dev rti_wdt ti_am335x_tscadc pruss pci_endpoint_test pvrsrvkm(O) sa2ul authenc phy_omap_usb2 pwm_tiecap spi
    _omap2_mcspi cryptodev(O) fuse drm drm_panel_orientation_quirks backlight ipv6
    [   10.076221] CPU: 1 UID: 0 PID: 12 Comm: kworker/u16:0 Tainted: G        W  O       6.12.49-ti-rt-g1a86d36433ea #1
    [   10.076238] Tainted: [W]=WARN, [O]=OOT_MODULE
    [   10.076242] Hardware name: Texas Instruments AM654 Base Board (DT)
    [   10.076248] Workqueue: events_unbound 0xffff8000805a8530
    [   10.076257] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   10.076268] pc : 0xffff8000809ad680
    [   10.076272] lr : 0xffff8000809ad570
    [   10.076277] sp : ffff00080015ba10
    [   10.076281] x29: ffff00080015ba10 x28: 00000000ffffffed x27: ffff00080686a518
    [   10.076294] x26: ffff00080686a518 x25: ffff00080686a4c0 x24: ffff00087ffa60c0
    [   10.076307] x23: ffff000803c9d958 x22: 0000000000000004 x21: 00000000ffffffed
    [   10.076320] x20: ffff80008102e020 x19: ffff00080888a000 x18: 0000000000000000
    [   10.076333] x17: ffff8007ff1d7000 x16: ffff00087ff4f040 x15: 0000000000000002
    [   10.076346] x14: 0000000000000040 x13: 00295e22a652288f x12: 00000000e0ccdeeb
    [   10.076359] x11: 00000000000000c0 x10: 0000000000000002 x9 : 0000000000000001
    [   10.076370] x8 : 0000000000000000 x7 : ffffffffffffffff x6 : 0000000000000046
    [   10.076383] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000001
    [   10.076397] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [   10.076409] Call trace:
    [   10.076413]  0xffff8000809ad680
    [   10.076418]  0xffff8000809ad8dc
    [   10.076422]  0xffff8000809ab124
    [   10.076426]  0xffff8000809ab19c
    [   10.076430]  0xffff8000793118d4
    [   10.076434]  0xffff80007931218c
    [   10.076438]  0xffff8000805ab974
    [   10.076442]  0xffff8000805a9084
    [   10.076445]  0xffff8000805a92d4
    [   10.076449]  0xffff8000805a9464
    [   10.076453]  0xffff8000805a95ec
    [   10.076457]  0xffff8000805a7168
    [   10.076461]  0xffff8000805a9948
    [   10.076465]  0xffff8000805a9b94
    [   10.076469]  0xffff8000805a80a8
    [   10.076473]  0xffff8000805a85b8
    [   10.076479]  0xffff800080053b60
    [   10.076483]  0xffff8000800543f8
    [   10.076487]  0xffff80008005c648
    [   10.076491]  0xffff800080014864
    [   10.076496] ---[ end trace 0000000000000000 ]---

    Regards,

    Nick