Для тех, кто знаком со сборкой Linux или Linux модули в частности, вот еще одно возможное исправление.
Это добавляет исправление в модуль rndis_host linux для исправления поврежденного MAC-адреса и делает его снова готовым решением для модема.
Интересно, что кто-то уже добавил обходной путь для «перепутанного» mac-адреса в rndis_host.c. К сожалению, это не касается случая с Samsung S7. Я добавил следующие строки:
int
generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
{
...
if (bp[0] & 0x02)
eth_hw_addr_random(net);
else
ether_addr_copy(net->dev_addr, bp);
// correct Samsung S7 'zero' mac address
if ( (bp[0]==0) && (bp[1]==0) && (bp[2]==0) /*&& (bp[3]==0) && (bp[4]==0) && (bp[5]==0)*/ ) {
// invalid mac address ==> generate one
eth_hw_addr_random(net);
}
// end of my fix
Теперь пересоберите модуль ядра и замените его оригинальным «rndis_host.ko.xz» и запустите «depmod -a». Я предлагаю перезагрузить или хотя бы удалить старый модуль: 'rmmod rndis_host'
Надеюсь, это сработает для вас. Теперь просто подключите Smamsung S7 и включите режим модема. Теперь он должен загрузить новый модуль сборки rndis_host и автоматически создать правильную настройку интерфейса и необходимые маршруты.
# ifconfig enp0s20u3
enp0s20u3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.42.253 netmask 255.255.255.0 broadcast 192.168.42.255
inet6 fe80::f970:b67b:661f:254c prefixlen 64 scopeid 0x20<link>
ether 92:06:fe:75:9e:43 txqueuelen 1000 (Ethernet)
RX packets 100 bytes 35951 (35.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 135 bytes 31911 (31.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.42.129 0.0.0.0 UG 0 0 0 enp0s20u3
192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s20u3
Вот отличие от того, что я исправил:
# diff -u rndis_host.c.ORIG rndis_host.c
--- rndis_host.c.ORIG 2017-04-05 15:19:01.353765062 -0700
+++ rndis_host.c 2017-04-05 15:18:37.327765272 -0700
@@ -434,6 +434,13 @@
else
ether_addr_copy(net->dev_addr, bp);
+//--------- correct Samsung S7 'zero' mac address -------------------------------------------------//
+ if ( (bp[0]==0) && (bp[1]==0) && (bp[2]==0) /*&& (bp[3]==0) && (bp[4]==0) && (bp[5]==0)*/ ) {
+ // invalid mac address ==> generate one
+ eth_hw_addr_random(net);
+ }
+//----- end of correction--------------------------------------------------------------------------//
+
/* set a nonzero filter to enable data transfers */
memset(u.set, 0, sizeof *u.set);
u.set->msg_type = cpu_to_le32(RNDIS_MSG_SET);
См. стр. 37 Руководства по настройке BoostFS для Linux . Там вы увидите раздел об использовании mount
. Для вашей среды команда монтирования будет mount -t boostfs datastore.company.com:Commvault /cvdisk
. В терминах /etc/fstab
:
datastore.company.com:Commvault /cvdisk boostfs defaults 0 0