sexta-feira, 4 de outubro de 2024

MILK-V Duo 256 - FAZENDO ACESSO A REDE VIA USB (OUTGOING)

,

Conecte o Milk-v duo via USB à máquina Linux e acesse a Internet


Introdução

Voluntários do Akihabara Robot Club compraram o Milk-V Duo e estão conduzindo 
individualmente vários experimentos e reportando-os no grupo de estudo.

Milk-V Duo é conhecido como um computador RISC-V de US$ 9.
O hardware é o seguinte.

  1. CPU: CVITEK CV1800B (C906@1Ghz + C906@700MHz)
  2. Núcleos RV64 duplos rodando até 1 GHz
  3. 64MB de RAM
  4. Conecte-se à Ethernet a velocidades de 10/100 Mbps com placa adicional opcional

Ao conectar o terminal USB-C desta placa a uma máquina Linux ou Windows com
um cabo USB, ele será reconhecido como um módulo LAN exibido como RNDIS.

Máquinas conectadas por meio de um cabo USB podem se comunicar entre si
usando aplicativos compatíveis com Ethernet, mas o Milk-v Duo não se conectará à 
Internet como está.

Neste artigo, apresentaremos as configurações para conectar o Milk-v Duo
conectado a uma máquina Linux à Internet.

Estou usando um Raspberry pi 4** com Raspberry pi OS instalado como uma
máquina Linux.

---
**Testamos no UBUNTU (Virtual Box)
---

Milk-v Duo em uma máquina Linux

Após conectar o Milk-v Duo e a máquina Linux com um cabo USB, se você digitar “dmesg” no prompt de comando da máquina Linux, verá que o Milk-v Duo está conectado ao RNDIS.

[   71.883752] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd
[   71.985050] usb 1-1.3: New USB device found, idVendor=3346, idProduct=1009, b                                        cdDevice= 5.10
[   71.985078] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber                                        =3
[   71.985095] usb 1-1.3: Product: RNDIS
[   71.985110] usb 1-1.3: Manufacturer: Cvitek
[   71.985123] usb 1-1.3: SerialNumber: 0123456789
[   72.078021] usbcore: registered new interface driver cdc_ether
[   72.083816] rndis_host 1-1.3:1.0 usb0: register 'rndis_host' at usb-0000:01:0                                        0.0-1.3, RNDIS device, e2:e8:cf:87:0b:b2
[   72.083981] usbcore: registered new interface driver rndis_host
[   72.091112] usbcore: registered new interface driver rndis_wlan

Verifique a placa de interface de rede (doravante denominada NIC) com "ip".

osboxes@osboxes:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:d9:ec:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.249/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3
       valid_lft 85052sec preferred_lft 85052sec
    inet6 2804:d57:76c7:6f00:fc7b:2463:f9ad:327/64 scope global temporary dynamic 
       valid_lft 7058sec preferred_lft 7058sec
    inet6 2804:d57:76c7:6f00:cee2:8be3:267c:1181/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 7058sec preferred_lft 7058sec
    inet6 fe80::992:b7e1:f2fb:4dec/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s11u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether de:57:b0:dc:9f:0a brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.13/24 brd 192.168.42.255 scope global dynamic noprefixroute enp0s11u1
       valid_lft 2364sec preferred_lft 2364sec
    inet6 fe80::675b:d922:864f:ead1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

“emp0s3” é a NIC da máquina Linux e “enp0s11u1” é a NIC do Milk-v Duo.
Você pode ver que eles pertencem a redes diferentes.

Configurações de rede no lado da máquina Linux

$ sudo sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o emp0s3 -j MASQUERADE

Verifique como as configurações são refletidas usando "ifconfig".
Somente alterações são mostradas aqui.

osboxes@osboxes:~$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.249  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 2804:d57:76c7:6f00:cee2:8be3:267c:1181  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::992:b7e1:f2fb:4dec  prefixlen 64  scopeid 0x20<link>
        inet6 2804:d57:76c7:6f00:fc7b:2463:f9ad:327  prefixlen 64  scopeid 0x0<global>
        ether 08:00:27:d9:ec:e4  txqueuelen 1000  (Ethernet)
        RX packets 31770  bytes 33898623 (33.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15625  bytes 2198522 (2.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s11u1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.42.14  netmask 255.255.255.0  broadcast 192.168.42.255
        inet6 fe80::675b:d922:864f:ead1  prefixlen 64  scopeid 0x20<link>
        ether de:57:b0:dc:9f:0a  txqueuelen 1000  (Ethernet)
        RX packets 7223  bytes 896133 (896.1 KB)
        RX errors 1  dropped 0  overruns 0  frame 0
        TX packets 15859  bytes 17468648 (17.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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 packets 1558  bytes 163174 (163.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1558  bytes 163174 (163.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

osboxes@osboxes:~$ 

O endereço IP de “usb0” foi alterado para “192.168.42.14”.

Configurações de rede no lado Milk-v Duo

Defina-o usando "192.168.42.14" que você verificou anteriormente.
"8.8.8.8" é o endereço do servidor DNS.

[root@milkv-duo]~# ip r add default via 192.168.42.14
[root@milkv-duo]~#echo "nameserver 8.8.8.8" >> /etc/resolv.conf

Verifique imediatamente se você está conectado à Internet.

[root@milkv-duo]~# ping www.yahoo.co.jp
PING www.yahoo.co.jp (182.22.31.252): 56 data bytes
64 bytes from 182.22.31.252: seq=0 ttl=56 time=35.350 ms
64 bytes from 182.22.31.252: seq=1 ttl=56 time=22.402 ms
64 bytes from 182.22.31.252: seq=2 ttl=56 time=21.581 ms
64 bytes from 182.22.31.252: seq=3 ttl=56 time=21.462 ms
^C
--- www.yahoo.co.jp ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 21.462/25.198/35.350 ms
[root@milkv-duo]~#

Conectado a "www.yahoo.co.jp".
Tente baixar o arquivo usando o comando wget.

[root@milkv-duo]~# wget www.yahoo.co.jp
Connecting to www.yahoo.co.jp (182.22.16.251:80)
wget: not an http or ftp url: https://www.yahoo.co.jp:443/
[root@milkv-duo]~#

"wget" para Milk-v Duo parece suportar apenas "http" e "ftp".

Conclusão

Existem maneiras de conectar o Milk-v duo à Internet usando um adaptador LAN
dedicado ou placa IO.
Se você tiver uma máquina Linux em mãos, esta configuração permitirá conectar o
Milk-V Duo à Internet sem nenhum investimento adicional.

Ref:

 LinuxマシンにUSB接続したMilk-v duoをInternetに接続する #RISC-V - Qiita

A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES. 

Nenhum comentário:

Postar um comentário