USB сеть для устройства N900

Материал из FRUCT Maemo wiki (Russian)
Перейти к: навигация, поиск

USB сеть для устройства N900

Данная статья посвящена тому, как активировать сеть на устройстве N900 через USB. В первой части описывается, как сконфигурировать устройство Nokia N900 в качестве съемного USB сетевого устройства. Во второй части описываектся, как сконфигурировать различные платформы для того, чтобы устройство Nokia N900 можно было использовать в качестве сетевого устройства. В основе данной статьи лежит гипертекстовая среда Maemo 4.x для конфигурации USB сети.


Желание использовать N900 в качестве USB сетевого устройства может возникнуть, когда необходимо удаленно войти на устройство N900 или передать данные с устройства N900 на другой компьютер в тех случаях, когда не представляется возможным использовать Wi-Fi или Bluetooth. Если возникло желание соединить N900 с машиной Linux через TCP/IP, в разделе Соединяемость с компьютером документации по Maemo SDK также содержится полезная информация.

Содержание


Конфигурация USB сети на устройстве N900

На устройстве N900 существует конфигурация интерфейса USB сети по умолчанию. В файле /etc/network/interfaces должен быть раздел, который выглядит следующим образом:

auto usb0
iface usb0 inet static
       address 192.168.2.15
       netmask 255.255.255.0
       gateway 192.168.2.14

Также можно добавить следующие строки, чтобы правильно установить маршрут по умолчанию

      up route del default
      up route add default gw  192.168.2.14

и данные строки

      up run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
      down run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true

для установки/сброса менеджера соединений на соединение/отсоединение надлежащим образом, особенно в том случае, если установлена сеть DUMMY согласно предложенным далее инструкциям.

В рамках данной конфигурации по умолчанию IP-адресом USB интерфейса на N900 будет 192.168.2.15, а у удаленного конца соединения - 192.168.2.14. По умолчанию интерфейс USB сети на N900 сконфигурирован. Пользователю необходимо инсталлировать пакет usb-network-modules.

Запуск режима USB сети

Подключите один конец USB кабеля к хосту и другой конец – к устройству N900. На устройстве N900 будет вызван диалог выбора режима. Выберите Режим комплект для компьютера.


USB Mode-Selection dialog


Откройте командный процессор в X Terminal на N900 и активируйте интерфейс, выполнив следующее:

sudo gainroot
ifup usb0

Если все прошло правильно, сообщения об ошибках не появятся. В результате использования команды ifconfig usb0 будут получены следующие данные на выходе:

Nokia-N900-42-11:~# ifconfig usb0
usb0      Link encap:Ethernet  HWaddr F2:50:8F:04:1D:8B  
          inet addr:192.168.2.15  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1021 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2003 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:86091 (84.0 KiB)  TX bytes:2556598 (2.4 MiB)

Теперь должна появится возможность проверить связь с 192.168.2.15

Nokia-N900-42-11:~# ping 192.168.2.15
PING 192.168.2.15 (192.168.2.15): 56 data bytes
64 bytes from 192.168.2.15: seq=0 ttl=64 time=0.367 ms
64 bytes from 192.168.2.15: seq=1 ttl=64 time=0.214 ms
^C
--- 192.168.2.15 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.214/0.290/0.367 ms

Чтобы автоматически настроить usb0, когда устройство переходит в режим Комплект для компьютера, измените последние несколько строк в /usr/sbin/pcsuite-enable.sh, добавив строку ifup usb0.

logger "$0: sent SIGUSR1 to syncd"
ifup usb0
exit 0

Фактически, если пользователь хочет использовать функцию Mail to exchange, чтобы синхронизировать почту, календарь или контакты с Exchange Server (таким, как google mail), режим Комплект для компьютера может блокировать обмен данными. Поэтому не используйте данную функцию, когда соединение выполняется в указанном режиме. Вместо этого выбирайте режим Только зарядка. В данный режим можно войти, если не выбирать ни один из пунктов в вышеупомянутом меню. Просто кликните над меню, чтобы его закрыть. В режиме Только зарядка пользователю по-прежнему предоставляется интерфейс usb0 при условии, что он уже был один раз инициализирован в режиме Комплект для компьютера.


Если не получается проверить связь с внешним миром (например, локальная сеть работает, а Google – нет), проверьте таблицы маршрутизации.

/home/user # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     0      0        0 usb0
default         192.168.2.14    0.0.0.0         UG    0      0        0 usb0
default         *               0.0.0.0         U     0      0        0 gprs0

В случае ситуации, которая напоминает описанное выше, когда пакеты сотовой сети по умолчанию имеют более низкий приоритет, возможно, придется выполнить следующее для ее исправления:

/home/user # route del default
/home/user # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     0      0        0 usb0
default         *               0.0.0.0         U     0      0        0 gprs0
/home/user # ping google.com
PING google.com (74.125.45.103): 56 data bytes
64 bytes from 74.125.45.103: seq=0 ttl=51 time=257.081 ms
64 bytes from 74.125.45.103: seq=1 ttl=51 time=236.481 ms
64 bytes from 74.125.45.103: seq=2 ttl=51 time=256.226 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 236.481/249.929/257.081 ms

Если после исправления таблицы маршрутизации пользователь по-прежнему не в состоянии проверить связь с внешним миром, попробуйте добавить nameserver в /etc/resolv.conf

nameserver 127.0.0.1
# added Google DNS
nameserver 8.8.8.8
nameserver 8.8.4.4

Завершение режима USB сети

Данная процедура выполняется по желанию. Нет необходимости останавливать интерфейс после отсоединения USB кабеля.

Тем не менее, чтобы остановить USB интерфейс, отсоедините USB кабель и выполните в X Terminal:

sudo gainroot
ifdown usb0

Настройка MAC-адреса

По умолчанию устройство N900 назначает произвольный MAC-адрес для USB интерфейса при каждой перезагрузке. В результате этого некоторые операционные системы (Mac OS X) будут обнаруживать новое устройство при каждом подключении N900 и предлагать сконфигурировать интерфейс сети. Решение проблемы заключается в назначении фиксированного MAC-адреса:

sudo gainroot
echo options g_nokia host_addr=00:11:22:33:44:55 > /etc/modprobe.d/g_nokia 

После следующей перезагрузки устройство N900 будет всегда распознаваться как одно и то же устройство.

Конфигурация USB сети хоста

Конфигурация хоста детально описана в гипертекстовой среде Maemo 4.x. Пожалуйста, обратитесь сюда за подробной информацией.

ИСПРАВИТЬ, для n900 нет режима USB хоста

Конфигурация хоста для Debian Lenny

Создайте файл в /etc/udev/rules.d/99-nokia-n900.rules и добавьте в него следующие строки:

SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900"
#SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"

Обратите внимание, что предложенная выше конфигурация udev может не работать в рамках Debian. Данное правило переименовывает или интерфейс USB сети (usb0), или интерфейс USB телефонной сети (usbpn0) в интерфейс под названием n900. Так как два предложенных выше правила идентичны, выбор осуществляется, очевидно, произвольно. Если уточнить правила, добавив ключ DEVPATH, это помогает:

SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.8/net/usb0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900"
SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/net/usbpn0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"

Конкретный ключ DEVPATH может, тем не менее, отличаться в зависимости от того, какой USB порт используется на главном компьютере и так далее. Можно использовать

udevadm monitor --kernel

во время подключения N900, чтобы увидеть правильный путь.

После добавления правил udev, их нужно повторно загрузить при помощи:

udevadm control --reload-rules

Теперь отредактируйте /прочее/сеть/интерфейсы и добавьте:

allow-hotplug n900
auto n900
iface n900 inet static
	address 192.168.2.14
	netmask 255.255.255.0
	up iptables -A POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
	up echo 1 > /proc/sys/net/ipv4/ip_forward
        down iptables -D POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
	down echo 0 > /proc/sys/net/ipv4/ip_forward

Теперь подсоедините USB кабель к компьютеру и к n900. Чтобы проверить, что все настроено правильно, можно выполнить:

ifconfig n900

Автоматическая конфигурация при помощи Ubuntu 9.10

Обратите внимание: данная инструкция должна быть исправлена/усовершенствована:

Создайте файл в /etc/udev/rules.d/99-nokia-n900.rules и добавьте в него следующие строки:

SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_ether", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_phonet", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900pn"

Теперь отредактируйте /прочее/сеть/интерфейсы и добавьте:

auto n900
iface n900 inet static
	address 192.168.2.14
	netmask 255.255.255.0
	up iptables -A POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
	up echo 1 > /proc/sys/net/ipv4/ip_forward
        down iptables -D POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
	down echo 0 > /proc/sys/net/ipv4/ip_forward

Теперь в /etc/init/network-interface.conf необходимо изменить строку:

stop on net-device-removed INTERFACE=$INTERFACE

на

stop on net-device-remove INTERFACE=$INTERFACE

(Обратите внимание на разницу: net-device-removed)


Повторно загрузите правила udev при помощи:

udevadm control --reload-rules

Теперь подсоедините USB кабель к компьютеру и к n900.

Если пользователь не может автоматически подсоединиться через сетевой аплет, возможно, придется вызывать интерфейс вручную:

ifup n900

Если все прошло успешно:

  • при помощи команды ifconfig -a пользователь должен увидеть 2 новых интерфейса сети, n900 и n900pn. Первый из них сконфигурирован с надлежащим IP-адресом 192.168.2.15 и должен быть в состоянии проверять связь с n900.
  • на n900 должна сразу же появиться возможность использовать Интернет соединение компьютера.

Windows XP

USB сеть Windows XP работает не идеально, но старый обход ошибки 770 по-прежнему работает. Поэтому выполните следующие действия:

  • Инсталлируйте приложение Mad Developer и запустите его.
  • Кликните на Управлять USB и затем на Загрузить g_ether.
  • Подключите устройство к USB порту. Пользователю Windows будет предложено назвать драйвер устройства для RNDIS. Вручную отметьте драйвер устройства и выберите файл linux.inf на странице Подключение к сети через USB.
  • Откройте терминал на устройстве N900 и получите права root, например через команду sudo gainroot. Введите ifconfig usb0 192.168.0.1
  • Теперь операционная система Windows должна показать, что соединение с сетью установлено. Задайте IP-адрес компьютера в диалоге соединений Windows.
  • Теперь пользователь должен быть в состоянии проверить связь с устройством, но не в обратном направлении, так как операционная система Windows по-прежнему фильтрует сетевой трафик. Тем не менее, все остальное должно работать, например MADDE.

Mac OS X

OS X обнаружит новый сетевой интерфейс и пользователю будет предложено его сконфигурировать. Выберите DHCP с адресом, вводимым вручную, и задайте 192.168.2.14 в качестве IP-адреса.

Чтобы использовать Интернет соединение Mac через USB сеть, не забудьте активировать Системные Привилегии -> Совместное использование -> Совместное использование Интернет для интерфейса N900. Инструкция

Использование USB сети для приложений Maemo

Стандартные сетевые приложения хорошо работают с USB сетью по умолчанию, в то время как приложения Maemo – нет.

Инсталлируйте libicd-network-dummy из репозитория Fremantle Nokia-binaries или, лучше, libicd-network-null из репозитория extras-devel. Во время работы USB сети выберите Пустая сеть в менеджере соединений. Если пустая сеть не появляется в сетевом менеджере, можно выполнить следующие команды в xterm:

gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/type DUMMY
gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/name "Dummy network"

и, возможно,

gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/autoconnect false

После этого перезапустите icd2:

killall icd2

или перезагрузите устройство.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты