Ethercat install on ubuntu 23.04 RPi gives modprobe invalid argument error/empty MAC address?

First, an introduction: I’m an embedded system “advanced hobbyist”: degree in Electrical Engineering, lots of experience with Arduino, ESP32, Raspbian on RPi, but it’s not my day job. I’m taking on an EtherCAT project for the first time (remote control robot: RC controller, robot computer, motors) and am completely new to EtherCAT. Eventually, I think this means I will write some custom software on the robot computer to receive commands from the RC controller, and translate those commands into EtherCAT messages for the robot hardware, sending them using the API in the ethercat.gif project.

I’m attempting to set up a testbed with 2 RPi 3B v1.2 running Ubuntu Server 23.04, one acting as sender (master) and the other simulating a receiver (slave) before I start working with real devices.

My research suggests I’m not technically using GitLab (because I’m not interfacing with MATLAB?), but I am hoping to use the ethercat code from EtherLab / EtherCAT Master · GitLab since it seems quite well developed.

So with that context, I have a specific question first about my near-there-but-not-quite attempt to get ethercat running on my linux RPi, and then a couple of general questions for advice.

Specific question (see title: ethercat install on ubuntu 23.04 RPi gives modprobe invalid argument error/empty MAC address?)

Installing ethercat from EtherLab / EtherCAT Master · GitLab to an RPi 3B v1.2 running Ubuntu Server 23.04 (32-bit). First time working with Ubuntu; more familiar with Raspbian.

Spent a long time getting to the point where everything would make without errors, then edited the ethercat.conf file and copied to /etc

Here’s the error

rbgorbet@artoo:~$ sudo ethercatctl start
modprobe: ERROR: could not insert 'ec_master': Invalid argument

and a possible clue from the journal

Jun 21 17:51:15 artoo sudo[1024]: rbgorbet : TTY=pts/0 ; PWD=/home/rbgorbet ; USER=root ; COMMAND=/usr/local/sbin/ethercatctl start
Jun 21 17:51:15 artoo sudo[1024]: pam_unix(sudo:session): session opened for user root(uid=0) by rbgorbet(uid=1000)
Jun 21 17:51:16 artoo kernel: ec_master: loading out-of-tree module taints kernel.
Jun 21 17:51:16 artoo kernel: EtherCAT: Master driver 1.5.2 1.5.2-300-g04f202a3
Jun 21 17:51:16 artoo kernel: EtherCAT ERROR: MAC address may not be empty.
Jun 21 17:51:16 artoo sudo[1024]: pam_unix(sudo:session): session closed for user root

It appears the MAC address is “empty,” which could explain an Invalid Argument error, but the file /etc/ethercat.conf (permissions=644) includes

...
# Examples:
# MASTER0_DEVICE="00:00:08:44:ab:66"
# MASTER0_DEVICE="eth0"
#
MASTER0_DEVICE="b8:27:eb:44:73:ab"
#MASTER1_DEVICE=""
...

and

rbgorbet@artoo:~$ ip addr
...
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b8:27:eb:44:73:ab brd ff:ff:ff:ff:ff:ff
...

Things I’ve tried (aside from searching the internet for the error text):

  • rebooting in case changes to the .conf file weren’t picked up by systemd; I was hoping that was the issue (I did edit .conf after booting…)
  • sudo systemctl daemon-restart.
  • replacing the actual MAC address in ethercat.conf with “eth0” as in the commented example
  • checking to see if older sysconfig files might be causing an issue. There is no /etc/init.d/ethercat file and no /etc/sysconfig directory at all (which makes sense).

In each case, I got the same error when starting up ethercatctl service.

Any thoughts? I’m stymied.

General questions

  1. Is there a better place on this forum (or any others you might be aware of) to post this question (sorry, I’m new)?
  2. Does anyone have suggestions for good receiver (slave) simulator code that would run on Ubuntu 23.04?
  3. Given what I’m trying to accomplish, does the below seem right or is there a different/better way?

some custom software on the robot computer to receive commands from the RC controller, and translate those commands into EtherCAT messages for the robot hardware, sending them using the API in the ethercat.gif project

I was able to solve the problem, but am still interested in the general questions above.

For those watching, the issue was that ethercatctl was looking for device MAC address in /usr/local/etc/ethercat.conf but I had put it into the version in scripts directory after install, then copied that to /etc/ethercat.conf as suggested on p.75 of the v1.5.2 documentation. The version installed in /usr/local/etc, presumably by make, still had blank device definitions.

Not sure if this is someone cares to know about for the documentation (don’t know if my case is unique or if this would be true generally), or who to notify.