PYNQ: PYTHON PRODUCTIVITY

Custom built Pynq - Ethernet fails

Hi again,

I’m having trouble getting Ethernet connection up and running on Genesys ZU 3EG board. While booting I first get an error: VFS: Cannot open root device “mmcblk0p2” or unknown-block(179,2): error -30
Please append a correct “root=” boot option; here are the available partitions

So I went into u-boot and pressed:
setenv bootargs ‘root=/dev/mmcblk0p2’

which worked but then starting a lot of tests from the operating system failed, here is the output:

[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[FAILED] Failed to start Raise network interfaces.
See ‘systemctl status networking.service’ for details.
[FAILED] Failed to start Entropy daemon using the HAVEGE algorithm.
See ‘systemctl status haveged.service’ for details.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
[ OK ] Reached target Host and Network Name Lookups.
Starting Create Volatile Files and Directories…
[ OK ] Stopped Network Name Resolution.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
Starting Update UTMP about System Boot/Shutdown…
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
Starting Create Volatile Files and Directories…
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[ OK ] Stopped Network Name Resolution.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
[ OK ] Stopped Network Time Synchronization.
Starting Create Volatile Files and Directories…
[FAILED] Failed to start Update UTMP about System Boot/Shutdown.
See ‘systemctl status systemd-update-utmp.service’ for details.
[DEPEND] Dependency failed for Update UTMP about System Runlevel Changes.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[ OK ] Stopped Network Name Resolution.
Starting Create Volatile Files and Directories…
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
Starting Update UTMP about System Boot/Shutdown…
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[ OK ] Stopped Network Name Resolution.
[ OK ] Stopped Network Time Synchronization.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[ OK ] Stopped Network Name Resolution.
[ OK ] Stopped Network Time Synchronization.
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
[FAILED] Failed to start Network Name Resolution.
See ‘systemctl status systemd-resolved.service’ for details.
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[FAILED] Failed to start Update UTMP about System Boot/Shutdown.
See ‘systemctl status systemd-update-utmp.service’ for details.
[ OK ] Stopped Network Time Synchronization.
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[ OK ] Reached target System Initialization.
[ OK ] Started Daily Cleanup of Temporary Directories.
[ OK ] Listening on UUID daemon activation socket.
[ OK ] Started Message of the Day.
[ OK ] Started Daily apt download activities.
[ OK ] Started Discard unused blocks once a week.
[ OK ] Listening on D-Bus System Message Bus Socket.
[ OK ] Reached target Sockets.
[ OK ] Started resolvconf-pull-resolved.path.
[ OK ] Reached target Paths.
[ OK ] Reached target Basic System.
Starting Dispatcher daemon for systemd-networkd…
Starting LSB: Load kernel modules needed to enable cpufreq scaling…
Starting Resize Filesystem on SD card…
[ OK ] Started ntp-systemd-netif.service.
Starting Login Service…
[ OK ] Started D-Bus System Message Bus.
Starting WPA supplicant…
[ OK ] Started Set the CPU Frequency Scaling governor.
Starting System Logging Service…
Starting PYNQ PL Server…
[ OK ] Started Regular background program processing daemon.
Starting LSB: automatic crash report generation…
Starting Jupyter Notebook Server…
[ OK ] Started Daily apt upgrade and clean activities.
[ OK ] Reached target Timers.
[ OK ] Started System Logging Service.
[ OK ] Started PYNQ PL Server.
[ OK ] Started Login Service.
[ OK ] Started WPA supplicant.
[ OK ] Reached target Network.
[ OK ] Reached target Network is Online.
Starting Samba NMB Daemon…
[ OK ] Started ISC DHCP IPv6 server.
[ OK ] Started ISC DHCP IPv4 server.
Starting Permit User Sessions…
Starting OpenBSD Secure Shell server…
[ OK ] Started Unattended Upgrades Shutdown.
[ OK ] Stopped Network Time Synchronization.
[FAILED] Failed to start Network Time Synchronization.
See ‘systemctl status systemd-timesyncd.service’ for details.
[ OK ] Started LSB: Load kernel modules needed to enable cpufreq scaling.
[ OK ] Started LSB: automatic crash report generation.
[ OK ] Started Permit User Sessions.
[ OK ] Started PYNQ X11 Server.
[ OK ] Started Serial Getty on ttyPS0.
[ OK ] Started Getty on tty1.
[ OK ] Reached target Login Prompts.
Starting LSB: set CPUFreq kernel parameters…
[ OK ] Started OpenBSD Secure Shell server.
[ OK ] Started LSB: set CPUFreq kernel parameters.
[ OK ] Created slice User Slice of root.
Starting User Manager for UID 0…
[ OK ] Started Session c1 of user root.
[FAILED] Failed to start Samba NMB Daemon.
See ‘systemctl status nmbd.service’ for details.
[ OK ] Started Dispatcher daemon for systemd-networkd.
Starting Samba SMB Daemon…
[ OK ] Started User Manager for UID 0.
[FAILED] Failed to start Samba SMB Daemon.
See ‘systemctl status smbd.service’ for details.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
[ OK ] Started Resize Filesystem on SD card.

After that ifconfig doesnt show eth1 and jupyter doesn’t workd. From the other board files I saw that for example the pynq-Z1 board has a seperate system-user.dtsi file which specifies Ethernet related stuff. Can you tell me what’s been happening here? I closely followed the setup guide for custom boards on the Pynq site and I didn’t find anything regarding these errors

Best regards
Daniel

Looks like a build issue. The board should just boot normally without any user interaction. Maybe the BSP has to be investigated?

I fixed the first issue. It looks like there was a write protection on the micro SD card. In the system-user.dtsi file I put in this:

include/ “system-conf.dtsi”
/ {
chosen {
bootargs= "console=ttyPS0,115200 earlycon clk_ignore_unused earlyprintk$
};
};

&sdhci1 {
disable-wp;
no-1-8-v;
};

then it boot up normal without an issue. The second issue however is that ethernet is still not present. I can launch Jupyter notebook but neither my PC detects my board, nor my board showing me any connection if typing ifconfig. I suspect the code for where my Ethernet chip is in the device tree is missing. Do you know how to update the code in the system-user.dtsi?

In the Petalinux project for my custom board I found something like this:

&gem0 {
phy-handle = <&phy0>;
phy-mode = “rgmii-id”;
phy0: phy@15 {
reg = <0x0F>;
reset-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
reset-assert-us = <1>;
reset_deassert-us = <200>;
interrupt-parent = <&gpio>;
interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; //overwrite$
ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>; //overwrite$
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
ti,clk-output-sel = <DP83867_CLK_O_SEL_REF_CLK>;
};
However I don’t think this information is correct for my hardware setup since I used other pins. My next step would be looking what this information actually means and trying to update the device tree with this kind of information.

After disabling the MDIO pins in Vivado for GEM0 the errors disappear and eth is available using ifconfig. Still no connection to Jupyter from my Browser, will open another issue