Bear_ku 0 14 января, 2020 Опубликовано 14 января, 2020 (изменено) · Жалоба Добрый день. Пытаюсь подключить к Raspberry Pi CM3+ (Linux raspberrypi 4.19.75-v7+) через USB HUB (USB2514) платы с USB-MAC (LAN7801) и PHY (88E1512) подключенные к выводам MDIO USB-MAC. При подаче питания сетевое соединение появляется но на этом все хорошие новости заканчиваются. Согласно ethtool сетевое соединение поддерживает только 1000baseT/Full и сменить его не дает. После перезагрузки сетевое соединение вообще не появляется в устройствах. В dmseg касательно phy и lan7801 имеются следующие строки: Quote [ 0.303370] libphy: Fixed MDIO Bus: probed [ 0.305879] usbcore: registered new interface driver lan78xx [ 3.123764] libphy: lan78xx-mdiobus: probed [ 3.130829] lan78xx 1-1.1:1.0 (unnamed net_device) (uninitialized): int urb period 64[ При сборке ядра, драйвера Marvell для PHY подключал в ядро и в модули, разницы не заметил. Может кто подсказать что делать? Поможет ли конфигурация Device Tree и как это сделать для моего случая? Для проверки PHY подключался к его ножкам MDIO и считывал информацию с регистров, работает корректно. Изменено 14 января, 2020 пользователем Bear_ku Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 14 января, 2020 Опубликовано 14 января, 2020 · Жалоба 48 минут назад, Bear_ku сказал: При подаче питания сетевое соединение появляется но на этом все хорошие новости заканчиваются. Согласно ethtool сетевое соединение поддерживает только 1000baseT/Full и сменить его не дает. После перезагрузки сетевое соединение вообще не появляется в устройствах. В dmseg касательно phy и lan7801 имеются следующие строки: после включения что показывает "lsusb"? что видно после "cat /proc/net/dev"? соберите драйвер lan78xx.c модулем и смотрите где валится функция lan78xx_probe через отладку или обычными printk как вариант - не хватает питания на usb порту, попробуйте (если я правильно понял вашу конструкцию) в комп включить. если заведется, то ищите хаб с внешним питанием и пробуйте через него.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 14 января, 2020 Опубликовано 14 января, 2020 · Жалоба Результат "lsusb": Bus 001 Device 003: ID 0424:7801 Standard Microsystems Corp. Bus 001 Device 002: ID 0424:2512 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Результат "cat /proc/net/dev" Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed eth0: 2402 27 0 2 0 0 0 0 9897 131 0 0 0 0 0 0 lo: 6270 66 0 0 0 0 0 0 6270 66 0 0 0 0 0 0 За совет спасибо, буду смотреть что делает драйвер lan78xx. С питанием проблем не должно быть, все подключено к лабораторному ИП и его возможности на порядок превышают требуемые. К ПК подключить не могу, плата с сетевыми интерфейсами сделана нашлепкой на базовую плату и стандартного разъема USB у нее нет. А вот результат команды "ethtool eth0": Settings for eth0: Supported ports: [ TP AUI BNC MII FIBRE ] Supported link modes: 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: off Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000007 (7) drv probe link Link detected: yes Может подскажете почему lan7801 может так себя вести? откуда взялся эти 1000baseT и почему в списке нет меньших скоростей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 14 января, 2020 Опубликовано 14 января, 2020 · Жалоба 1 час назад, Bear_ku сказал: Результат "cat /proc/net/dev" Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed eth0: 2402 27 0 2 0 0 0 0 9897 131 0 0 0 0 0 0 lo: 6270 66 0 0 0 0 0 0 6270 66 0 0 0 0 0 0 За совет спасибо, буду смотреть что делает драйвер lan78xx. Может подскажете почему lan7801 может так себя вести? откуда взялся эти 1000baseT и почему в списке нет меньших скоростей? судя по строке: eth0: 2402 27 0 2 0 0 0 0 9897 131 0 0 0 0 0 0 интерфейс поднимается и что-то получает/отправляет, а что выводит команда "ifconfig"? и если ничего, то "ifconfig eth0 addr up" где addr свободный адрес в сети вашего компьютера и еще раз "ifconfig" решение usb-ethernet обычно прожорливо и чувствительно к питанию 5В и там характерны жалобы как в вашем логе "int urb period 64" ethtool может не работать, т.к. он запрашивает инфу и функции из драйвера, а там может быть не прописан нужный функционал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 15 января, 2020 Опубликовано 15 января, 2020 · Жалоба Проверил питание. На плате стоит преобразователь 5В в 3.3В, 1.8В и т.д., все уровни в норме. Результат "ifconfig eth0": eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 169.254.224.86 netmask 255.255.0.0 broadcast 169.254.255.255 inet6 fe80::9ebf:84d3:f9d9:3a78 prefixlen 64 scopeid 0x20<link> ether 36:47:d6:da:be:d5 txqueuelen 1000 (Ethernet) RX packets 33 bytes 5290 (5.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 197 bytes 13050 (12.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Но работает не стабильно (например при подключении к свичу теряется до 80% пакетов) и до первой перезагрузки. После этого вываливаются ошибки: [ 9.750190] lan78xx 1-1.1:1.0 eth0: no PHY driver found [ 9.750203] lan78xx 1-1.1:1.0 eth0: lan7801: PHY Init Failed Сейчас ищу способ подружить LAN7801 с 88E1512. А, да, еще есть такой момент. Для LAN7801 при включении вообще не важен PHY. А если убрать связь по MDIO с PHY, сетевое соединение не отваливается и при перезагрузке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 3 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба On 1/14/2020 at 1:28 AM, Bear_ku said: Добрый день. Пытаюсь подключить к Raspberry Pi CM3+ (Linux raspberrypi 4.19.75-v7+) через USB HUB (USB2514) платы с USB-MAC (LAN7801) и PHY (88E1512) подключенные к выводам MDIO USB-MAC. Расскажу с чего бы я начал проверку. Сначала немного простой теории. Чтобы в Линуксе заработало устройство надо зарегистрировать само устройство (это происходит если правильно определить в дереве устройств) и драйвер. зарегистрированные устройства и драйверы создают псевдо файлы здесь: ls /sys/bus/usb/ devices drivers drivers_autoprobe drivers_probe uevent устройства /sys/bus/usb/devices драйверы /sys/bus/usb/drivers в вашем устройстве по меньшей два типа устройств PHY и USB. Я не знаю куда попадет PHY, но USB точно попадет куда я сказал. Могут быть еще устройства. Попробуйте сравнить какие драйверы появляются если набрать команду lsmod до того как вставили USB. На каждый драйвер должно быть по меньшей мере одно устройство (а может и несколько одинаковых). Поищите псевдофайлы устройств и драйверов. в директории /sys/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 16 января, 2020 Опубликовано 16 января, 2020 (изменено) · Жалоба 21 hours ago, Bear_ku said: Для LAN7801 при включении вообще не важен PHY. А если убрать связь по MDIO с PHY, сетевое соединение не отваливается и при перезагрузке Драйвер lan7801 не находит PHY и срабатывает ветка для fixed phy https://elixir.bootlin.com/linux/v4.19.96/source/drivers/net/usb/lan78xx.c#L2070 поэтому и ethtool показывает фиксированные параметры - что-то у вас не так со схемой подключения. Я бы начал проверку с VDDO_SEL pin Quote 88E1512/88E1514 VDDO can operate at 1.8V/2.5V/3.3V supplies depending on the VDDO_SEL pin selection. https://www.marvell.com/documents/eoxwrbluvwybgxvagkkf/ потом RESETn, CONFIG - много мест где можно накосячить, маловероятно что софтовая проблема Изменено 16 января, 2020 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 16 января, 2020 Опубликовано 16 января, 2020 (изменено) · Жалоба Плату делал другой человек. Я сейчас перепроверяю за ним, каких-либо критических ошибок не нашел. VDDO_SEL подтянут к земле, т.е. выбраны уровни 2.5-3.3В, что соответствует уровням на плате 3.3В. CONFIG на одной плате подключил к земле, на другой к питанию, т.е. адреса PHY 0 и 1. Оба не грузятся. PHY_RESET_N c LAN7801 подключен напрямую к RESETn 88E1512. Ориентируясь на Device Tree от Raspberry Pi 3 добавил свой кусок: /dts-v1/; /plugin/; /{ compatible = "brcm,bcm2837"; fragment@0 { target = <&usb>; __overlay__ { usb2512b@1 { compatible = "microchip,usb2512b"; reg = <0x2c>; #address-cells = < 0x01 >; #size-cells = < 0x00 >; ethernet1: usbether@1 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 11 22 33 44 55 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy1: ethernet-phy@1 { compatible = "marvell,88e1510"; device_type = "ethernet-phy"; reg = <0>; }; }; }; ethernet2: usbether@2 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 10 20 30 40 50 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy2: ethernet-phy@2 { compatible = "marvell,88e1510"; device_type = "ethernet-phy"; reg = <0>; }; }; }; }; }; }; }; Но изменений нет, даже МАС адреса не изменяются. Все таки надеюсь что разгадка кроется где-то тут ) Дальше уже полезу кромсать плату и заводить MDIO на ноги RPi, минуя USB-MAC. Изменено 16 января, 2020 пользователем Bear_ku Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба Кусок не выглядит правдоподобным. Конкретику надо в драйвере 7800 смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба А что именно вас тут смущает? И может подскажете как посмотреть, что реально из этого загружается? Вот пример из Devicetree на lan78xx &usb { usb-port@1 { compatible = "usb424,2514"; reg = <1>; #address-cells = <1>; #size-cells = <0>; usb-port@1 { compatible = "usb424,2514"; reg = <1>; #address-cells = <1>; #size-cells = <0>; ethernet: ethernet@1 { compatible = "usb424,7800"; reg = <1>; local-mac-address = [ 00 11 22 33 44 55 ]; mdio { #address-cells = <0x1>; #size-cells = <0x0>; eth_phy: ethernet-phy@1 { reg = <1>; microchip,led-modes = < LAN78XX_LINK_1000_ACTIVITY LAN78XX_LINK_10_100_ACTIVITY >; }; }; }; }; }; }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 24 минуты назад, Bear_ku сказал: Но изменений нет, даже МАС адреса не изменяются. Все таки надеюсь что разгадка кроется где-то тут ) compatible = "marvell,88e1510"; так это.. id у 1510 и 1512 различаются и детект phy завершится ошибкой, а там колбеки для подстройки.. и 1512 достаточно требователен к выходной части в сторону меди Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 25 minutes ago, Jury093 said: детект phy завершится ошибкой Нет. compatible у phy - это так, пережитки прошлого, определение идет исключительно по ID. Меня больше смущает выделение mdio как таковой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bear_ku 0 16 января, 2020 Опубликовано 16 января, 2020 (изменено) · Жалоба 40 minutes ago, Jury093 said: так это.. id у 1510 и 1512 различаются и детект phy завершится ошибкой, а там колбеки для подстройки.. и 1512 достаточно требователен к выходной части в сторону меди Настройку 88E1512 брал отсюда: https://forums.xilinx.com/t5/Embedded-Linux/Dual-Marvell-88e1512-PHY-Ethernet-problem-Xilinx-LInux/m-p/731207#M17356 Там используются два варианта настроек для "compatible": compatible = "marvell,88e1510"; и compatible = "marvell"; Оба варианта не дали никакого результата. 13 minutes ago, gosha-z said: Нет. compatible у phy - это так, пережитки прошлого, определение идет исключительно по ID. Меня больше смущает выделение mdio как таковой... Я выше добавил пример из документации, там делается так. Не знаю как по другому указать, что MDIO от PHY подключен именно к LAN7801 и как еще задать адрес. В ходе загрузки получается что модуль с драйвером marvell не грузится. На шине MDIO адрес при включении платы "0", после перезагрузки "1". Вообщем живет своей жизнью. Осциллографом успеваю поймать только одно обращение по шине. Вскоре приедет логический анализатор и может он хоть что-то даст. Ну и как написал выше, МАС адрес из Devicetree на сетевое устройство не подключается. Т.е. там может ерунда написана, но может его еще кто-то правит. Изменено 16 января, 2020 пользователем Bear_ku Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба 1 hour ago, Bear_ku said: Ориентируясь на Device Tree от Raspberry Pi 3 добавил свой кусок: 42 minutes ago, Bear_ku said: ethernet: ethernet@1 { compatible = "usb424,7800"; почему 7800 если у вас 7801 с внешним PHY, да и сомневаюсь что прописав PHY в DT это что-то изменит - PHY должен автоматом определяться. Осцилом не пробовали смотреть обмен по mdio ? 1 hour ago, Bear_ku said: Дальше уже полезу кромсать плату и заводить MDIO на ноги RPi, минуя USB-MAC для начала отладочные сообщения включите в драйвере Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 1 16 января, 2020 Опубликовано 16 января, 2020 · Жалоба А с чего вы вообще взяли, что для 7801 должен быть такой compatible? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться