> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ethernet

This guide covers configuring, operating, and troubleshooting Ethernet connectivity on the Qualcomm Dragonwing IQ-8275 EVK. The platform supports interface enumeration, data path, link speed configuration, MAC address management, MTU configuration, and network diagnostics.

## Prerequisites

* IQ-8275 EVK hardware
* Ethernet cable (RJ45)
* Host PC on the same network as the IQ-8275 EVK
* SSH client software
* Basic Linux command-line knowledge

## Architecture

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/iq9075-ethernet-architecture.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=fecefa8d732ef9523ddde18cba49d066" width="550" height="853" data-path="Linux/images/peripheral-interfaces/iq9075-ethernet-architecture.png" />

| Component                                  | Description                                                                                                                                                                                |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Application Processor Subsystem (APSS)** | Runs on a Linux-based operating system                                                                                                                                                     |
| **Ethernet driver**                        | Linux kernel driver providing data connectivity over a wired Ethernet interface                                                                                                            |
| **PHY driver**                             | Low-level driver managing the Ethernet physical layer; implements a state machine for PHY lifecycle from initialization to link establishment; interacts with MDIO to access PHY registers |
| **Ethernet hardware**                      | 1× QEP8081 PHY for 10/100/1000/2500 Mbps, enabled by RJ45 connector                                                                                                                        |

## Getting Started

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/iq9075-ethernet-workflow.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=7d340a66bde96786a4525245c6e73216" width="1868" height="181" data-path="Linux/images/peripheral-interfaces/iq9075-ethernet-workflow.png" />

## Bring Up Ethernet

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/iq9075-ethernet-bringup-workflow.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=b7116c3b86b5f09312b1080c271939cf" width="812" height="112" data-path="Linux/images/peripheral-interfaces/iq9075-ethernet-bringup-workflow.png" />

<Note>
  Establish access to the device via SSH over Wi-Fi or the serial prompt before proceeding. See the [Set up the device](../set-up-the-device) section for instructions.
</Note>

<Note>
  Flash the corresponding CDT on the device to ensure the correct configuration is used for Ethernet bring-up.
</Note>

<Steps>
  <Step title="Configure MAC Address (optional)">
    The IQ-8275 EVK ships with a factory MAC address. Skip this step to use it as-is.

    To change the MAC address:

    ```shell theme={null}
    ip link set dev eth0  XX:XX:XX:YY:YY:YY
    ```

    <Warning>
      This MAC address is valid only for the current boot cycle. After rebooting, the device reverts to the address from persistent storage.
    </Warning>
  </Step>

  <Step title="Assign an IP Address">
    On a public network, the DHCP server assigns an IP address automatically. To assign a static IP address manually:

    ```shell theme={null}
    ip addr add 192.168.1.2 dev end0
    ```
  </Step>

  <Step title="Configure MTU">
    ```shell theme={null}
    ip link set dev end0 down
    ip link set dev end0 mtu 1500
    ip link set dev end0 up
    ```
  </Step>

  <Step title="Verify Bring-Up">
    Confirm the following:

    * `end0` is visible in `ip` output
    * Interface status shows `UP BROADCAST RUNNING MULTICAST`
    * IP address is correctly assigned
    * MTU is set to the desired value (typically 1500)
    * No errors in RX/TX packet counters
  </Step>
</Steps>

## Ethernet Operations

### Check Connectivity

Use `ping` to verify connectivity between the device and a remote host. The client IP address must be in the same subnet as the device.

```shell theme={null}
ping 169.254.227.240
```

### Configure NIC Settings

```shell theme={null}
ethtool end0
ethtool -S end0
```

### Capture Network Traffic

```shell theme={null}
tcpdump -i any -s 0 -w /var/log/tcpdump.pcap
```

### View Routing Table

```shell theme={null}
ip r s
```

## Configure Link Speed

```shell theme={null}
ethtool -s end0 autoneg on speed 1000 duplex full
```

## Troubleshooting

### Collect Diagnostic Logs

<Steps>
  <Step title="Collect dmesg logs">
    ```bash theme={null}
    dmesg > /var/log/dmesg_logs.txt
    ```
  </Step>

  <Step title="Collect tcpdump logs">
    ```bash theme={null}
    tcpdump -i any -s 0 -w /var/log/tcpdump.pcap
    ```

    Press `Ctrl+C` to stop capture.
  </Step>

  <Step title="Pull log files to host PC">
    ```bash theme={null}
    scp ubuntu@<device_ip>:/var/log/tcpdump.pcap .
    scp ubuntu@<device_ip>:/var/log/dmesg_logs.txt .
    ```
  </Step>
</Steps>

### Common Issues

<AccordionGroup>
  <Accordion title="No Link Detected">
    ```bash theme={null}
    dmesg | grep -i phy
    ip link show end0
    ethtool end0
    ```

    **Solutions:** Replace faulty cable, ensure both ends are securely connected, verify link partner is powered on, check for PHY driver errors in `dmesg`.
  </Accordion>

  <Accordion title="Cannot Ping Remote Host">
    ```bash theme={null}
    ip link show end0
    ip route show
    netstat -r
    arp -a
    tcpdump -i end0 icmp
    ```

    **Solutions:** Configure correct IP address and subnet mask; add default gateway if needed.
  </Accordion>

  <Accordion title="Slow Network Performance">
    ```bash theme={null}
    ethtool end0 | grep -E "Speed|Duplex"
    ethtool -S end0 | grep -E "error|drop|collision"
    ip link show end0 | grep MTU
    ```

    **Solutions:** Force 1000 Mbps full-duplex if auto-negotiation fails; replace cable if errors are detected.
  </Accordion>

  <Accordion title="Interface Not Detected">
    ```bash theme={null}
    ip link show
    dmesg | grep -i ethernet
    ls /sys/class/net/
    ```

    **Solutions:** Ensure correct CDT is flashed; verify Ethernet driver is compiled in kernel; reboot and check again.
  </Accordion>
</AccordionGroup>

## Command Reference

| Command           | Purpose              | Example             |
| ----------------- | -------------------- | ------------------- |
| `dmesg`           | View kernel messages | `dmesg \| grep eth` |
| `ethtool <if>`    | Check link status    | `ethtool end0`      |
| `ethtool -S <if>` | View NIC statistics  | `ethtool -S end0`   |
| `ip addr show`    | Show IP addresses    | `ip addr show end0` |
| `ip route show`   | Show routing table   | `ip route show`     |
| `ping <host>`     | Test connectivity    | `ping 192.168.1.10` |
| `tcpdump -i <if>` | Capture packets      | `tcpdump -i end0`   |
| `netstat -r`      | Show routes          | `netstat -r`        |
| `arp -a`          | Show ARP table       | `arp -a`            |

## Resources

* [ethtool man page](https://man7.org/linux/man-pages/man8/ethtool.8.html)
* [netstat man page](https://man7.org/linux/man-pages/man8/netstat.8.html)
* [tcpdump man page](https://www.tcpdump.org/manpages/tcpdump.1.html)
