Как изменить MAC-адрес (навсегда) или идентифицировать 3G USB-модем?

Как изменить MAC-адрес (навсегда) или идентифицировать 3G USB-модем?

Я купил два 3G usb-донгла, и у них обоих одинаковый mac-адрес. После некоторых исследований янайденныйЭто распространенная проблема, поэтому покупка новых может не решить ее.

Мне нужно идентифицировать конкретное устройство, поэтому мой вопрос: как я могу идентифицировать устройство, если Mac-адрес обоих устройств одинаков?

Можно ли назначить новый MAC-адрес одному устройству (навсегда, так как устройство может время от времени терять питание) или есть какой-то уникальный идентификатор, который я могу использовать?

решение1

Есть несколько способов настройки MAC-адреса сетевого интерфейса. В Windows вы можете редактировать настройки в расширенном представлении карты. Или используйте powershell (имейте в виду, что Set-NetAdapter может быть недоступен в старых версиях Windows):

Set-NetAdapter –Name "Ethernet 1" -MacAddress "00-10-18-57-1B-0D"

В Linux вам нужно найти правильную команду или отредактировать файл /etc/network/interfaces примерно так:

auto eth0
iface eth0 inet dhcp
hwaddress ether 01:02:03:04:05:06

решение2

Похоже, нет способа изменить mac "навсегда". Все найденные решения позволяют вам изменить его только до перезагрузки устройства. Чтобы изменить его навсегда, вам нужно иметь доступ к драйверам, и даже тогда это может быть невозможно (т. е. производитель просто не предоставляет такую ​​возможность).

решение3

У меня то же самое с E3372h. MAC-адрес можно изменить на прошивках HiLink: нужно получить доступ к Android-консоли (что тоже нетривиально) устройства и изменить файл типа /app/config/lan/config.xml

Для прошивок Stick я не нашел способа изменить MAC. Я предполагаю, что это может быть какая-то команда для записи mac в какую-то ячейку nvram, например AT^NVWREX=bla-bla, но я не смог ее найти.

Другой подход, который вы можете использовать в Linux, — это создать правило udev на основе пути к USB-устройству. Таким образом, имя интерфейса будет привязано к определенному USB-порту (но не к самому устройству, что, безусловно, предпочтительнее). Создайте файл с именем типа/etc/udev/rules.d/99-wwan.rules

## Rules to setup fixed interface and port names for usb dongles with identical MAC addresses
# To get MAC address of interface use:
#     N=0; ip addr show wwan${N}
# To get ID_PATH of current interface use (N is interface number, e.g. N=0 for wwan0):
#     N=0; udevadm info -q all -p /sys/class/net/wwan${N} | grep -m1 ID_PATH=
# To get devpath of cdc-wdm${N} use (see first parent):
#     N=0; udevadm info -a -n /dev/cdc-wdm${N}
# To get KERNELS and bInterfaceProtocol for ttyUSB${N} use (see first parent):
#     N=0; udevadm info -a -n /dev/ttyUSB${N}
# Ports configuration related to AT^SETPORT="FF;12,16,5,A1,A2"

# wwan0 on 1.4.1
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:10:1f:00:00", ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.4.1:1.1", KERNEL=="wwan*", NAME="wwan0"
SUBSYSTEM=="tty",     KERNELS=="1-1.4.1:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-wwan0"
SUBSYSTEM=="usbmisc", KERNELS=="1-1.4.1:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan0"
SUBSYSTEM=="tty",     KERNELS=="1-1.4.1:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-a_shell-wwan0"

# wwan1 on 1.4.3
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:10:1f:00:00", ENV{ID_PATH}=="platform-3f980000.usb-usb-0:1.4.3:1.1", KERNEL=="wwan*", NAME="wwan1"
SUBSYSTEM=="tty",     KERNELS=="1-1.4.3:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-wwan1"
SUBSYSTEM=="usbmisc", KERNELS=="1-1.4.3:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan1"
SUBSYSTEM=="tty",     KERNELS=="1-1.4.3:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-a_shell-wwan1"

# # wwan on ???
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="???", ENV{ID_PATH}=="???", KERNEL=="wwan*", NAME="wwan???"
# SUBSYSTEM=="tty",     KERNELS=="???:1.0", ATTRS{bInterfaceProtocol}=="12", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-wwan???"
# SUBSYSTEM=="usbmisc", KERNELS=="???:1.1", ATTRS{bInterfaceProtocol}=="16", KERNEL=="cdc-wdm*", SYMLINK+="cdc-wdm-wwan???"
# SUBSYSTEM=="tty",     KERNELS=="???:1.2", ATTRS{bInterfaceProtocol}=="05", KERNEL=="ttyUSB*",  SYMLINK+="ttyUSB-a_shell-wwan???"

Измените значения ID_PATH, KERNELS и адрес на свои собственные значения. Вы также можете изменить имя, символические ссылки и/или добавить дополнительные параметры udev.

Связанный контент