Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hi3518e and ethernet not working ? #4

Open
briaeros opened this issue Nov 27, 2016 · 29 comments
Open

Hi3518e and ethernet not working ? #4

briaeros opened this issue Nov 27, 2016 · 29 comments

Comments

@briaeros
Copy link

Hi,

I've got an 53H13PE board, with a Hi3518e and an aptina and I'm trying to use your buildroot on it.

However, the driver hieth seems to be a little upset with it, since it give me an interface (eth0) wich emits and receives absolutely no packet.
I can assign it an ip address, but whatever I do, no packet are sended nor received (check by tcpdump on the board, or on my network).
The on-board firmware works well on this aspect.

I've used the linux 3.0 version, since with the 3.4 I don't have any serial console (and no network).
I've tried to modify the RMII_MODE_{U,D} and the PHYID_{U,D} in the linux config, to no avail.

Have you got this problem , and/or do you have an idea where to look at to investigate ?

Do you know any "cheap" board that is compatible with this buildroot (it could be easier to just switch the board :))

Cordially

Ps : on the on-board firmware, I've got theses informations, but I don't know what to do with

From boot :

<6>PHY: himii:01 - Link is Up - 100/Full
<6>Sofia uses obsolete (PF_INET,SOCK_PACKET

from some other conf file

DRIVER=hieth
MODALIAS=platform:hiet
himii:01

from the directory /sys/devices/platform/hieth.0/net/eth0

$cat iflink 
2
$cat link_mode 
0
$cat type
1
$cat operstate 
up
$cat features 
0x4000
$cat flags 
0x1003
@csolg
Copy link

csolg commented Dec 28, 2016

You need to change "rmii" to "mii" in package/himpp/himpp-hi3518v100/load3518.sh.

csolg@c1940db

@briaeros
Copy link
Author

briaeros commented Jan 1, 2017

Thanks for the answer and the hint.

However, no luck there. I've change the load3518.sh, then as id didn't work, adding the CONFIG_HIETH_MII_RMII_MODE_U=0
CONFIG_HIETH_MII_RMII_MODE_D=0
to the linux-3.0 config (I've test with 1 also).
But nothing seems to work.

The led is barely orange when buildroot is "on" (as if there are not enough power).
On Uboot , it's brightly orange at start, then stay only green. And on the original firmware the two leds are brightly on.

I've dump the spi firmware and "binwalk" him, but I've no idea how find the "config" of the kernel (I don't think that's possible :( ).

@csolg
Copy link

csolg commented Jan 1, 2017

@briaeros Can you see the chip name?

@briaeros
Copy link
Author

briaeros commented Jan 1, 2017

The phy chip is IP101GR (http://www.bdtic.com/DataSheet/ICplus/IP101G_DS_R01_20121224.pdf ), and the Hi chip is HI3518ERBCV10D.
Someone else did make a good pdf of the module in question http://ve6sbs.sbszoo.com/projects/ipcam/53H13PE-S/53H13PE-S_Mods.pdf (I've check the reference of the chips and I've got the same).
The pcb on mine module is too dark to know how the '4' pin (MII/RMII) of the IP101GR is connected.

Thanks for your help :)

@csolg
Copy link

csolg commented Jan 2, 2017

Did you rebuild the kernel (with command make linux-rebuild)?

@briaeros
Copy link
Author

briaeros commented Jan 2, 2017

I use make clean && make -j 8 to compile "from scratch" each time.
To be sure, I've (re-)cloned the git repo, add the two modification (the two lines on the linux-3.0 config and the modification on the loadhi3518.sh) .
Then , after a make hi3518v100_defconfig; I've modified the config only on two way

  • adding tcpdump
  • putting the rootfs in the initramfs (BR2_TARGET_ROOTFS_INITRAMFS=y) (for me, that's the most simple way of loading and testing a new firmware).

Unfortunately , this doesn't change a thing :(

I've verified with an uname -a that I've got the last compiled kernel.
"Linux hi35xx 3.0.8 #2 Mon Jan 2 23:20:10 UTC 2017 armv5tejl GNU/Linux"

I've copied the boot.txt if it could help.
boot.txt

If you've got any idea to test, I'm more than interested :)

@csolg
Copy link

csolg commented Jan 3, 2017

Do you have access to uboot? I need output of command printenv. Also output of command ifconfig (from linux console).

@briaeros
Copy link
Author

briaeros commented Jan 3, 2017

Hi,

I've attached multiples files. I've found that the origin firmware is in rmii (the boot launch ./load3518 -i ar0130 , and the "load3518" command is copied in load-firmware-origin.txt).

The uboot printenv is in uboot.txt, and I've run ifconfig on both firmware (buildroot and firmware origin, which works).
I've add the kmsg of the origin firmware.

However, even if it's in rmii, it doesn't explain why it wouldn't work :'(

ifconfig-buildroot.txt
ifconfig-firmware-origin.txt
kmsg-firmware-origin.txt
load-firmware-origin.txt
uboot.txt

@csolg
Copy link

csolg commented Jan 6, 2017

Did you set BR2_TARGET_UBOOT_BOARDNAME to hi3518e?

@briaeros
Copy link
Author

briaeros commented Jan 7, 2017

Hi,

I didn't, but I've done a new compile using this parameters to hi3518e (and modifying BR2_TARGET_UBOOT_HI35XX_IMAGE_CH_FILE to board/hisilicon/hi3518/boot/reg_info_hi3518e.bin).

Unfortunately , I tried to use the uboot generate with the command tftp 0x81000000 u-boot.bin then go 0x81000000 , but the network didn't work in the new uboot.

No more lucks with just the kernel and the original u-boot.

I think that my board is cursed :d
If you've know a name of a cheap board that works well, I'm eager to know it :)

@csolg
Copy link

csolg commented Jan 10, 2017

Hi, I have the same board. But I can access to the network from uboot and linux. Did you fix the problem? I bought a programmator for mx25l6406e. If you have a problem with the board loading.

@briaeros
Copy link
Author

Thank you for your patience.

I've tried to modify the default configuration of uboot, to get it directly working from ram (without the uboot-env partition). But even when I put all the information that are in uboot-env.txt, I can't make it work. So I'm not really confident to put it on flash ;)
I've test with mii and rmii.

I tried to boot the new kernel from this uboot (loading it before), but without success. It didn't even take into account the uboot variable "sensor_type" and always try to launch the ov sensor. I pass the ${hieth} to kernel command line.
Modifying mdioifu and mdioifd to 1 doesn't modified the apathy of the kernel.

I've got some stm32 laying somewhere, perhaps I could convert one to make a spi progammer, but I'm not too found to desolder the chips (and I'm sure to be good enough to

How did you make your firmware image ? Juste copy each binary to the right address on the flash, or do you make a complete image before pushing it to the flash ?

(on the new uboot, I've got this environnment
bootargs=mem=32M console=ttyAMA0,115200
bootcmd=run autoboot
bootdelay=5
baudrate=115200
ethaddr=00:00:23:34:45:66
ipaddr=192.168.1.13
serverip=192.168.1.19
preboot=
netmask=255.255.255.0
bootfile="uImage"
loadaddr=0x81000000
meminfo=mem=32M
console=ttyAMA0,115200n8
mtdparts=hi_sfc:256k(uboot)ro,128k(uboot-env),128k(mfd),1536k(kernel),4m(rootfs),-(user)
commonargs=setenv bootargs ${meminfo} console=${console} mtdparts=${mtdparts}
flashboot=echo Booting from SPI Flash...; run commonargs; sf probe 0 && sf read ${loadaddr} 0x80000 0x180000 && bootm
serialboot=echo Booting from y-modem...; run commonargs; loady && bootm
autoboot=if run flashboot; then; else run serialboot; fi
sensor_type=ar0130
mdio_intf=mii
phyaddru=1
phyaddrd=2
netdev=eth0
nfsopts=hard,tcp,vers=3
hieth=hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2
mtdparts=hi_sfc:512k(uboot)ro,256k(uboot-env),256k(mfd),2m(kernel),5m(rootfs),-(user)
commonargs=setenv bootargs ${meminfo} panic=10 console=${console} mtdparts=${mtdparts} ${hieth}
bootargsorig=mem=39M console=ttyAMA0,115200n8 root=/dev/mtdblock1 rootfstype=cramfs mtdparts=hi_sfc:256K(boot),3520K(romfs),2560K(user),1280K(web),256K(cus),320K(mt)
orig=setenv setargs setenv bootargs ${bootargsorig};run setargs;fload;bootm 0x82000000
myboot=setenv bootargs ${commonargs} && tftp 0x82000000 cam/uImage && bootm 0x82000000
HWID=8043420004748432
NID=0x0012
muxctl0=
muxval0=
gpio0=
gpioval0=
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06-dirty (Jan 12 2017 - 00:05:51)
)

@49handyman
Copy link

has anyone figured this out. I have same problem on a hi3518e juan board. have linux, uboot, running pretty goo finally after trashing 2 boards and now unsoldering spi chip 8 times. now im pretty good at it... LOL

@49handyman
Copy link

my board has full network connectivity in uboot, but no in Linux.
let me know if anything is wrong with it!

here is is the current fw_print:

fw_printenv

bootcmd=run autoboot
baudrate=115200
ethaddr=00:00:23:34:45:66
preboot=
loadaddr=0x81000000
serialboot=echo Booting from y-modem...; run commonargs; loady && bootm
meminfo=mem=40m
console=ttyAMA0,115200
flashroot=/dev/mtdblock4
bootfile=hi3518/uImage
sensor_type=ar0130
init=/init
hieth=hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2
flashoverlay=/dev/mtdblock5
flashoverlayfstype=jffs2
commonargs=setenv bootargs ${meminfo} console=${console} mtdparts=${mtdparts} ${hieth} init=${init}
addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off
nfsargs=run commonargs; setenv bootargs ${bootargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts}
nfsboot=echo Booting from NFS...; run nfsargs; run addip; tftp ${loadaddr} ${bootfile} && bootm ${loadaddr}
flashargs=run commonargs; setenv bootargs ${bootargs} root=${flashroot} overlay=${overlay} rootfstype=${flashrootfstype} overlay=${flashoverlay} overlayfstype=${flashoverlayfstype}
filesize=3B5000
fileaddr=81000000
netmask=255.255.255.0
ipaddr=192.168.1.10
serverip=192.168.1.107
mtdparts=hi_sfc:256k(uboot)ro,128k(uboot-env),128k(mfd),2m(kernel),5m(rootfs),-(user) ramdisk=4096
bootdelay=3
bootargs=mem=40m console=ttyAMA0,115200 mtdparts=hi_sfc:256k(uboot)ro,128k(uboot-env),128k(mfd),2m(kernel),5m(rootfs),-(user) ramdisk=4096 hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2 init=/init root=/dev/mtdblock4 overlay= rootfstype=squashfs overlay=/dev/mtdblock5 overlayfstype=jffs2
autoboot=if run flashboot; then; else run nfsboot; fi
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Jul 02 2017 - 03:46:51)
flashboot=echo Booting from SPI Flash...; run flashargs; sf probe 0 && sf read ${loadaddr} 0x80000 0x200000 && bootm
phyaddru=1
phyaddrd=2
netdev=eth0
nfsopts=hard,tcp,vers=3
NID=0x0012
HWID=8043420004748432
mdio_intf=mii
flashrootfstype=squashfs,jffs2
rootpath=/srv/tftp/hi3518/

@49handyman
Copy link

looks like I have a problem loading some modules. Ill repair and report if it fixes problem. I can ping only the interface ip on eth0. nothing else works.

hi3518_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
Hisilicon UMAP device driver interface: v3.00
pa:82800000, va:c31c0000
load sys.ko ...OK!
load viu.ko ...OK!
ISP Mod init!
load vpss.ko ....OK!
load venc.ko ...OK!
load group.ko ...OK!
load chnl.ko ...OK!
load h264e.ko ...OK!
load jpege.ko ...OK!
load rc.ko ...OK!
load region.ko ....OK!
load vda.ko ....OK!
hi_i2c: version magic '3.0.8dsw.BR3 mod_unload ARMv5 ' should be '3.0.8 mod_unload ARMv5 '
insmod: can't insert 'extdrv/hi_i2c.ko': invalid module format
pwm: version magic '3.0.8dsw.BR3 mod_unload ARMv5 ' should be '3.0.8 mod_unload ARMv5 '
insmod: can't insert 'extdrv/pwm.ko': invalid module format
ssp_ad9020: version magic '3.0.8dsw.BR3 mod_unload ARMv5 ' should be '3.0.8 mod_unload ARMv5 '
insmod: can't insert 'extdrv/ssp_ad9020.ko': invalid module format
acodec inited!
insert audio
==== Your input Sensor type is ar0130 ====
OK
Starting system message bus: done
Starting network: ADDRCONF(NETDEV_UP): eth0: link is not ready
OK
Starting live-streamer: OK

Welcome to hi35xx-buildroot
hi3518e login: PHY: himii:01 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

@49handyman
Copy link

.config - Linux/arm 3.0.8 Kernel Configuration
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
┌─────────────────────────── hieth(switch fabric) family network device support ────────────────────────────┐
│ Arrow keys navigate the menu. selects submenus --->. Highlighted letters are hotkeys. │
│ Pressing includes, excludes, modularizes features. Press to exit, <?> for Help, │
│ </> for Search. Legend: [] built-in [ ] excluded module < > module capable │
│ │
│ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ --- hieth(switch fabric) family network device support │ │
│ │ (0x726d6d73) hieth tag │ │
│ │ (0x10090000) hieth IO address │ │
│ │ (0x00010000) hieth IO size │ │
│ │ (12) hieth irq number │ │
│ │ [ ] eee support │ │
│ │ (10) hieth monitor timer │ │
│ │ (12) hieth hardware queue send fifo depth │ │
│ │ (2) hieth mdio frequency factor │ │
│ │ (0) hieth mii/rmii mode for up port (mii:0/rmii:1) │ │
│ │ (0) hieth mii/rmii mode for down port (mii:0/rmii:1) │ │
│ │ (1) hieth phyid for up port │ │
│ │ (2) hieth phyid for down port │ │
│ │ [ ] enable hieth down port │ │
│ │ (1024) hieth max rx pool size │ │
│ │ (18) hieth trace(debug) level │ │
│ │ [
] hieth reset helper │ │
│ │ (0x20140000) hieth reset helper on which gpio group │ │
│ │ (5) hieth reset helper on gpio bit │ │
│ │ (0) hieth reset helper on gpio value │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ < Exit > < Help > │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────

@49handyman
Copy link

my board has microchip ethernet controller is ksz8081mnx. had it working after screwng around for 2 hours.i dont know what i did however !@.

@49handyman
Copy link

tested with mii-test in linux and all shows good.

here is u-boot mii dump, eth0 = no such device

ipcam # mii device eth0:1
No such device: eth0:1
ipcam # mii device eth1:2
ipcam # mii dump
0. (ffff) -- PHY control register --
(8000:8000) 0.15 = 1 reset
(4000:4000) 0.14 = 1 loopback
(2040:2040) 0. 6,13 = b11 speed selection = ??? Mbps
(1000:1000) 0.12 = 1 A/N enable
(0800:0800) 0.11 = 1 power-down
(0400:0400) 0.10 = 1 isolate
(0200:0200) 0. 9 = 1 restart A/N
(0100:0100) 0. 8 = 1 duplex = full
(0080:0080) 0. 7 = 1 collision test enable
(003f:003f) 0. 5- 0 = 63 (reserved)

@49handyman
Copy link

Got mine fixed after 5 hours of testing and retesting. playing with u-boot scripts. Here is the final linux cmdline that works:

cat /proc/cmdline
mem=40m console=ttyAMA0,115200 mtdparts=hi_sfc:256k(uboot)ro,128k(uboot-env),128k(mfd),2m(kernel),5m(rootfs),-(user) ramdisk=4096 hieth.mdioifu=0 hieth.mdioifd=0 hieth.phyaddru=1 hieth.phyaddrd=2 init=/init root=/dev/mtdblock4 rootfstype=squashfs,jffs2 overlay=/dev/mtdblock5 overlayfstype=jffs2 ip=192.168.1.10:192.168.1.107:192.168.1.107:255.255.255.0:ipcam:eth1:off

@briaeros
Copy link
Author

briaeros commented Jul 18, 2017

Hello,

I'm really sorry for the delay and I want to thanks you for your persistence and coming back once it's works ;)
I will test as soon as I got the camera back (but I will wait at least one month since the one who got it is on holliday).
I don't remember having done many test with static configuration, perhaps something play there ?

@mark4h
Copy link

mark4h commented Aug 2, 2017

Hi @briaeros,

I also had a problem getting the Ethernet working and believe I was having the same problem as you. Particularly when you described:

"The led is barely orange when buildroot is "on" (as if there are not enough power).
On Uboot , it's brightly orange at start, then stay only green. And on the original firmware the two leds are brightly on."

I tried changing the CONFIG_HIETH_MII_RMII_MODE_U and CONFIG_HIETH_MII_RMII_MODE_D options to 1 (RMII) but this didn't get the Ethernet working.

In the end I needed to also edit the net_rmii_mode function in the pinmux_hi3518.sh startup script, which was incorrectly setting the muxctrl_reg28 register to the wrong function (EPHY_CLK instead of GPIO1_3).

I've made these changes in a fork of hi35xx-buildroot, see:
mark4h@1431cc6#diff-084575f2e251e68e0dec60679d6760b3

I've also writen a longer description of diagnosing the problem in a blog post, see:

http://mark4h.blogspot.co.uk/2017/08/hi3518-camera-module-part-2-getting.html

Hope this helps,
mark4h

@49handyman
Copy link

ive had good luck booting from nor flash and sdcard, but unable to get parameters right for nfs root file system boot.

any ideas?

what is rtsp connection url for live-streamer???

@49handyman
Copy link

any ideas on setting ethernet connector to jtag. if i understand the mux usage it can be set for jtag usage, but dont understand source code well enough to figure out.

@briaeros
Copy link
Author

briaeros commented Sep 7, 2017

@mark4h
Your branch correct my trouble , and now I've got the network. (I didn't found yet which rtsp url I could use with live-streamer, but that's another story).

Your blog post is very informative. I don't think I would've found theses register.

Thanks a lot for your investigation and correction.

Do you plan to do a push request ?

(ps , I didn't see any rss on your blog to see what you would do with your camera ;) )

@briaeros
Copy link
Author

briaeros commented Sep 7, 2017

@49handyman
Hello,

Concerning the nfs : if you boot with an image "standalone" (flash, initrd, ...) , do you have access to the network in it ?
If yes, what is the kernel command line you want to use to boot on nfs ?

For the jtag, I'm not sure you can mux it directly other the ethernet phy. Nothing seems to indicate this on the datasheet of my ethernet phy or the hi3518.

For the live-streamer url , I'm searching the same information :).

@tofurky
Copy link

tofurky commented Nov 18, 2017

@mark4h thanks. i was getting hieth:hieth_net_timeout:461: and tx timeout on my hi3518ev100 board. i think the oem is siepem and the camera was sold as a "spigen e300w".
i just copy+pasted the devmem commands from the net_mii_mode() function without rebooting and the network miraculously came to life :)
looking at the oem firmware, there is a file /komod/pinmux_hi3518.sh which also has a function called net_mii_mode() that basically does the same thing, but uses the himm utility from the hisilicon sdk instead of devmem.
i'll probably end up just converting those scripts to use devmem instead of himm (which kind of seems like you have done in your fork).
p.s. here are several hi3518 sdk .zip's including ones as recent as end of 2015: https://app.box.com/s/cibs7n1mgvhqaqjlidtveegu1uajt5yr/folder/18989615567
i used 7z to extract the multi-part zip files.

@ZigFisher
Copy link

Can I get RTSP destination URL from live-streamer started on HI3518EV1 cam with ov9712 sensor ?

AutoReply

You can get RTSP traffic from IPCam - rtsp://you_device_ip:554/0 or rtsp://you_device_ip:554/1

@ZigFisher
Copy link

Good afternoon !

I have a question about the use of an internal/external Ethernet PHY.

If I use an internal Hisilicon PHY then I must set it in the kernel settings:
CONFIG_HIETH_PHYID_U=0
CONFIG_HIETH_PHYID_D=1

If I use an external PHY RTL8201 or IP101 then I must set it in the kernel settings:
CONFIG_HIETH_PHYID_U=1
CONFIG_HIETH_PHYID_D=2

If I rebuild the kernel for each system, everything works fine.

I'm wondering, is there a way to switch PHY directly from the Linux console via devmem/himm ?

Thanks for any answers

@straga
Copy link

straga commented Jan 21, 2022

Look patch
https://github.com/OpenIPC/firmware/tree/master/br-ext-chip-hisilicon/board/hi3516cv100/kernel/patches
22_hieth_port.patch and hieth_autoprobe.patch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants