If network is not working on your hi35xx device after installing OpenIPC (no link), you may have to tune the MII (Media Independent Interface) settings.
For U-Boot, this is done by setting values for phyaddru
, phyaddrd
and mdio_intf
.
Possible values for phyaddru
and phyaddrd
are: 0-3
, possible values for mdio_intf
are: rmii
, rgmii
, gmii
.
For the Linux kernel / OS, values can be set through the extras
boot variables hieth.phyaddru
, hieth.phyaddrd
, hieth.mdioifu
and hieth.mdioifd
.
Often the correct values can be found in your stock firmware. Viewing the boot logs or running ipctool on your stock firmware may provide clues.
Below are some combinations you can try:
In Linux console run this:
fw_setenv extras 'hieth.phyaddru=0 hieth.phyaddrd=1' && reboot
If the above settings did not work, try this instead:
fw_setenv extras 'hieth.phyaddru=1 hieth.phyaddrd=0' && reboot
Or:
fw_setenv extras 'hieth.mdioifu=0 hieth.mdioifd=0' && reboot
Or:
fw_setenv extras 'hieth.mdioifu=1 hieth.mdioifd=1' && reboot
Or:
fw_setenv extras hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2 && reboot
Or:
fw_setenv extras hieth.phyaddru=3 hieth.mdioifu=0 && reboot
Note: if a certain combination causes your device to fail to boot, you can clear the variable(s) in the U-Boot prompt by calling setenv <variable>
, i.e. set the variable using an empty argument, followed by saveenv
.
Set phyaddru
and phyaddrd
variables from U-Boot console:
setenv phyaddru 0; setenv phyaddrd 1; saveenv; reset
If the above settings did not work, try this instead
setenv phyaddru 1; setenv phyaddrd 0; saveenv; reset
Or:
setenv phyaddru 0; setenv phyaddrd 0; saveenv; reset
Or:
setenv phyaddru 1; setenv phyaddrd 1; saveenv; reset
Note: to initialize and test network connectivity in U-Boot, the ping
command can be used.
Some known combinations for specific boards:
For U-boot network:
setenv phyaddru 1
setenv phyaddrd 2
setenv mdio_intf rmii
saveenv
For Linux network:
setenv extras 'hieth.phyaddru=1 hieth.phyaddrd=2'
saveenv
For Linux network:
setenv hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2
saveenv
For U-boot network:
setenv phyaddru 0
setenv phyaddrd 1
saveenv
For U-boot network:
setenv phyaddru 3
saveenv
For Linux network:
setenv extras 'hieth.phyaddru=3 hieth.mdioifu=0'
saveenv
For U-boot network:
setenv extras 'hieth.phyaddru=1 hieth.mdioifu=0'
saveenv
If nothing of the above worked for you, please ask in our Telegram channel.