Intel® Edge Software Hub
Get answers from community peers to your questions about building Edge Software Hub solutions for edge compute node.
Announcements
The Edge Software Vision Package for Red Hat Enterprise Linux is now available here.

Learn more about developing on Intel® Hardware and Software here.
434 Discussions

EtherCAT: failed to get master information inappropriate ioctl for device

Du_le
Beginner
3,214 Views

你好,我用ECI安装Debian 11,然后用xenomai安装EtherCAT成功。但是我不能使用 ethercat mast,它告诉我“无法获得不适合设备的 ioctl 的主信息”。teminal.txt 是我的电脑系统和配置,problem.txt 是问题所在。ethercat.txt 是 /etc/sysconfig/ethercat 配置。   

谢谢你!

我也把它们如下:

$ uname -a
Linux cnc-ctb 5.10.140-intel-ese-standard-lts-dovetail+ #1 SMP PREEMPT IRQPIPE Thu Dec 8 10:13:52 UTC 2022 x86_64 GNU/Linux

$ lspci
00:00.0 主机桥:英特尔公司设备 4522(版本 01)
00:02.0 VGA 兼容控制器:英特尔公司设备 4555(版本 01)
00:14.0 USB 控制器:英特尔公司设备 4b7d(版本 11)
00:14.2 RAM 内存:英特尔公司设备 4b7f(修订版 11)
00:16.0 通信控制器:英特尔公司设备 4b70(修订版 11)00
:17.0 SATA 控制器:英特尔公司设备 4b63(修订版 11)
00:1c.0 PCI 桥:英特尔公司设备 4b38(版本 11)
00:1c.1 PCI 桥:英特尔公司设备 4b39 (版本 11)
00:1f.0 ISA 桥:英特尔公司设备 4b00 (版本 11)
00:1f.3 音频设备:英特尔公司设备 4b58 (版本 11) )
00:1f.4 SMBus:英特尔公司设备 4b23(修订版 11)
00:1f.5 串行总线控制器 [0c80]:英特尔公司设备 4b24(修订版 11)
01:00.0 以太网控制器:英特尔公司以太网控制器 I225-V(修订版 03)
02:00.0 以太网控制器:英特尔公司 I211 千兆网络连接(修订版 03)

$ sudo ifconfig
enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 34:df:20:00:0d:b6 txqueuelen 1000 (以太网)
RX 数据包 0 字节 0 (0.0 B)
RX 错误 0 丢弃 0 溢出 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x80100000-801fffff

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.239 netmask 255.255.255.0 broadcast 192.168.137.255
ether 34:df:20:00:0d:b7 txqueuelen 1000 (Ether2822)
RX2 字节数据包(275.2 KiB)
RX 错误 0 dropped 0 overruns 0 frame 0
TX packets 203 bytes 29864 (29.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x80300000-8031ffff

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX 数据包 3713 字节 307751 (300.5 KiB)
RX错误 0 丢弃 0 溢出 0 帧 0
TX 数据包 3713 字节 307751 (300.5 KiB)
TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0

sudo /etc/init.d/ethercat start
启动 EtherCAT master 1.5.2 完成

$ sudo /etc/init.d/ethercat status
检查 EtherCAT master 1.5.2
Master0 正在运行

$ ethercat master
获取主信息失败:设备的 ioctl 不合适

$ ethercat slaves
获取主信息失败:设备的 ioctl 不合适

 

#------------------------------------------------ --------------------------
#
# EtherCAT 主站系统配置文件
#
# $Id$
#
# vim: spelllang=en spell tw= 78
##
-------------------------------------------- ------------------------------

#
# 主要以太网设备。
#
# MASTER<X>_DEVICE 变量指定索引为
“X”的主机的以太网设备。
# # 指定要使用的
以太网设备的 MAC 地址(带冒号的十六进制) 。
示例:“00:00:08:44:ab:66”
#
# 广播地址“ff:ff:ff:ff:ff:ff”具有特殊含义:它告诉
# master 接受由提供的第一个设备任何以太网驱动程序。
#
# MASTER<X>_DEVICE 变量也确定,将创建多少个主控器
:非空变量 MASTER0_DEVICE 将创建一个主控器,添加一个
# 非空变量 MASTER1_DEVICE 将创建第二个主控器,依此类推。
#
MASTER0_DEVICE="34:df:20:00:0d:b6"
#MASTER1_DEVICE=""

#
# 备份以太网设备
#
# MASTER<X>_BACKUP 变量指定用于冗余的设备。它们
# 的行为几乎与 MASTER<X>_DEVICE 变量相同,只是它
# 不解释 ff:ff:ff:ff:ff:ff 地址。
#
#MASTER0_BACKUP=""

#
# 用于 EtherCAT 操作的以太网驱动程序模块。
#
# 指定一个非空的以太网驱动程序列表,用于
# EtherCAT 操作。
#
# 除了通用的以太网驱动模块,初始化脚本将尝试
卸载列表中的常用以太网驱动模块,并用
支持 EtherCAT 的模块替换它们。如果未找到某个(支持 EtherCAT 的)驱动程序
,则会出现警告。
#
# 可能的值:8139too, e100, e1000, e1000e, r8169, generic, ccat, igb, igc,
#stmmac, dwmac_intel。
# 用空格分隔多个驱动程序。
#
# 注意:e100、e1000、e1000e、r8169、ccat 和 igb 驱动程序不是由
# 默认。使用 --enable-<driver> 配置开关启用它们。
# # 注意:使用通用驱动程序时,必须激活
相应的以太网设备(使用 OS 方法,例如“ip link set ethX up”), #在主机启动之前,否则所有帧都会超时。# DEVICE_MODULES="igc" REBIND_NICS="0000:01:00.0"




#
# 用于加载内核模块的标志。
#
# 这通常可以留空。
如果模块加载有问题,请调整此变量。
#
#MODPROBE_FLAGS="-b"

#------------------------------------------------ ------------------------------

Labels (1)
0 Kudos
1 Solution
JesusE_Intel
Moderator
3,179 Views

Hi Du_le,

 

Could you double check the device details in /etc/sysconfig/ethercat?

 

I used the following commands to ensure I was using the correct MAC address, PCIE and driver. You will need to make sure that ethercat is stopped.

 

$ sudo /etc/init.d/ethercat stop
$ sudo ifconfig

eno1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether a4:ae:12:77:85:b6 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    device memory 0x8e100000-8e17ffff
$ cat /sys/class/net/eno1/device/uevent
DRIVER=igb
PCI_CLASS=20000
PCI_ID=8086:1533
PCI_SUBSYS_ID=FFFF:0000
PCI_SLOT_NAME=0000:6d:00.0
MODALIAS=pci:v00008086d00001533sv0000FFFFsd00000000bc02sc00i00

 

#/etc/sysconfig/ethercat
MASTER0_DEVICE="a4:ae:12:77:85:b6"
DEVICE_MODULES="igb"
REBIND_NICS="0000:6d:00.0" #eno1

 

Regards,

Jesus

 

 

View solution in original post

0 Kudos
3 Replies
JesusE_Intel
Moderator
3,180 Views

Hi Du_le,

 

Could you double check the device details in /etc/sysconfig/ethercat?

 

I used the following commands to ensure I was using the correct MAC address, PCIE and driver. You will need to make sure that ethercat is stopped.

 

$ sudo /etc/init.d/ethercat stop
$ sudo ifconfig

eno1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether a4:ae:12:77:85:b6 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    device memory 0x8e100000-8e17ffff
$ cat /sys/class/net/eno1/device/uevent
DRIVER=igb
PCI_CLASS=20000
PCI_ID=8086:1533
PCI_SUBSYS_ID=FFFF:0000
PCI_SLOT_NAME=0000:6d:00.0
MODALIAS=pci:v00008086d00001533sv0000FFFFsd00000000bc02sc00i00

 

#/etc/sysconfig/ethercat
MASTER0_DEVICE="a4:ae:12:77:85:b6"
DEVICE_MODULES="igb"
REBIND_NICS="0000:6d:00.0" #eno1

 

Regards,

Jesus

 

 

0 Kudos
Du_le
Beginner
3,169 Views

Thank you for your help, Jesus

I have solved this problem. 

0 Kudos
JesusE_Intel
Moderator
3,154 Views

Glad I could help! If you need any additional information, please submit a new question as this thread will no longer be monitored.


0 Kudos
Reply