пятница, 25 января 2013 г.

Yacom SMC-7908-ISP и 3G

Я живу в частном секторе и благо цивилизации - интернет, здесь доступно только в виде 3G модема (надеюсь не долго). Недавно попался мне ADSL модем SMC-7908-ISP. Модем оказался у меня "случайно" - привезла девушка из Испании. Как только я его увидел, то подумал: на него точно можно поставить Linux :)
Что из этого получилось читайте дальше.

Интернет у меня раздавал Dell GX240, вот такой:
Также он был: файл-сервером (1Tb HDD), DHCP-сервером, Wi-Fi точкой доступа, торрент качалкой и аудио-плеером (mpd). ОС - Ubuntu Server. По паспорту он потребляет максимально 180 Вт, работает очень тихо - под кроватью его не слышно вообще. После "прихода" в дом SMC-7908-ISP, функции Wi-Fi перенеслись на модем. Так все проработало месяц.

Перед новогодними праздниками появилось свободное время и я решил таки поставить на модем linux. Гугл на запрос "SMC-7908-ISP linux" первой ссылкой отправил на страницу OpenWRT. Перечитав, понял - оно. :)

По теории все просто:
1. Ставим загрузчик.
2. Ставим систему.
3. Настраиваем.
4. ??...PROFIT!

Для пробы я решил поставить систему с ветки Backfire 10.03.1, а рабочую собрать с ветки Trunk. Подключался к модему через USB-UART переходник. Программа - minicom.
Дальше буду расписывать "подводные камни" на каждом этапе.

1. Загрузчик.
На деф прошивке стоит загрузчик brnboot, через него можно поменять на U-boot. Подробнее расписано здесь.
После загрузки U-boot думал залить прошивку. В U-boot есть TFTP клиент который загружает прошивку с сервера и записывает ее в флеш. А нет, загрузка после нескольких кб падала по таймауту:
ARV4518 =>run update_openwrt
Using lq_cpe_eth device
TFTP from server 192.168.1.5; our IP address is 192.168.1.25
Filename 'ARV4518PW-squashfs.image'.
Load address: 0x80500000
Loading: ##TTT

Сменив несколько тфтп серверов и просмотрев кучу страниц гугла понял что проблема таки в загрузчике. Перепробовал штук 5 - результат тот же. На форуме наткнулся на инфу о загрузке U-boot через UART.

Включить режим UART-boot просто:

И в консоли:
cat ./u-boot.asc >> /dev/ttyUSB0


Запустил обновление, работает:
ARV4518 => run update_openwrt
Using lq_cpe_eth device
TFTP from server 192.168.1.5; our IP address is 192.168.1.25
Filename 'ARV4518PW-squashfs.image'.
Load address: 0x80500000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######
done
Bytes transferred = 2359300 (240004 hex)

..................................... done
Erased 37 sectors
Copy to Flash... 9....8....7....6....5....4....3....2....1....done


Позже я нашел U-boot с нормальным TFTP клиентом, который качал прошивку без таймаутов.

2. Прошивка.
Прошивку я собирал с ветки trunk, выкинув все ненужное для меня как: dsl драйвер, pppoe и т.д. оставив только минимум для работы.Собрал, прошил и снова проблема: загрузка падает в кернел паник:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,4)
Лечится установкой загрузчика поновее.

3. Настройка.
Настройка у меня сводится к настройке ррр-соединения, dhcp, доступа к интернету и Wi-Fi.

1. PPP-connect(оператор InterTelecom - Украина).
Переходим в каталог /etc/ppp/
cd /etc/ppp/
Открываем для редактирования(например vi chap-secrets) файл chap-secrets и записываем в него строку:
IT * IT
Создаем файл it-chat и записываем в него следующие строки:
ABORT BUSY
ABORT ERROR
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid Login'
ABORT 'Login incorrect'
TIMEOUT 5
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' AT
OK 'ATZ'
OK 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'
TIMEOUT 5
OK 'ATDT#777'
CONNECT ''
TIMEOUT 5
'~--' ''

Создаем каталог peers
mkdir peers
В каталоге peers создаем файл it-serial и записываем в него следующие строки:
ipcp-accept-local
ipcp-accept-remote
noipdefault
defaultroute
usepeerdns
user IT
noauth
novj
nobsdcomp
crtscts
modem
lock
mtu 1500
mru 1500
persist
logfile /var/log/it.log

/var/log/it.log - файл лога, если вам не надо - пишем /dev/null. :)

Для автоматизации запуска pppd создаем файл /etc/init.d/pppd:
#!/bin/sh /etc/rc.common
 
START=99
start() {
/usr/sbin/pppd connect 'chat -f /etc/ppp/it-chat' call it-serial /dev/ttyACM0 460800
}
stop() {
killall pppd
}

Устанавливаем права:
chmod 755 /etc/init.d/pppd

Создаем симлинк для автостарта:
ln -s /etc/init.d/pppd /etc/rc.d/S99pppd

Перезагружаемся, pppd должен запуститься автоматически.

2. DHCP.
Я сменил только стартовый IP и лимит адресов.
vi /etc/config/dhcp

option start    2
option limit    15


3.Доступ к интернету.
Для раздачи интернета нужно настроить NAT:
#/bin/sh
 
# Clear all rule
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -F
 
# NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


4. Wi-Fi.
Открываем файл /etc/config/wireless  и пишем:

config wifi-device wlan0
option type mac80211
option channel 5
option macaddr 00:22:15:a3:42:e9
option hwmode 11g
option disabled 0

config wifi-iface
option device wlan0
option network lan
option mode ap
option ssid MYROUTER #Имя сети
option encryption psk2+tkip #Шифрование
option key PASSWORD #Пароль


Перезагружаем модем. Все работает.

Здесь Uboot, Uboot-UART, Flash-image и config ядра. Пользуйтесь.

19 комментариев:

  1. Спасибо, отличный обзор, думаю многим пригодится ваш опыт...

    ОтветитьУдалить
  2. через ком порт + LAN установить openwrt невозможно ?
    спасибо

    ОтветитьУдалить
  3. Возможно, я так и устанавливал. На некоторых роутерах возможно установить OpenWRT из под оригинальной прошивки. У меня проблема была в том, что на загрузчике который я прошил не работал нормально TFTP клиент, потому и такие сложности с загрузкой uboot через UART.

    ОтветитьУдалить
  4. usanovil openwrt no wifi ne rabotaet.nashol soft .espanskom forume.posmatrite foto.negde ne nashol proshivka chtob bilo vsio na meste.
    http://s55.radikal.ru/i150/1309/d8/5361b580f460.jpg
    http://www.mediafire.com/download/c9aiivy4gx7j5dj/openwrt-lantiq-danube-ARV4518PW-squashfs.image
    spasibo...

    ОтветитьУдалить
    Ответы
    1. Возможно у вас нет модуля ath5k, или он не работает. Консолью пользоватся умеете? Посмотреть бы вывод lsmod | grep ath и dmesg | grep ath. Вспомнил что у меня Wi-Fi не работал на прошивке 12.09 с сайта openwrt, собирал сам. Могу кинуть но она без веб интерфейса.

      Удалить
    2. daite pojalusto proshivka.no bez interfeisa budit dlia menia s nastrikami trudno.ia etot router vklucfhil na cardsharinge.zapustil MPCS i rbotaet prekrasno no bez wifi ochen ploxo.
      kak nibut mojno zdelat tak chtob bil web interfeis i rabotal tolko wifi?drugie sistemi ne interesno toklo wifi i web interfeis ?
      spasibo

      Удалить
  5. /etc/config/wireless
    nastroiki pakajite pojalusto?postavil arv4518_MAC_2.bin wifi meniu vidno interfeise.

    http://s018.radikal.ru/i528/1309/b4/33d0443a64cd.png

    ОтветитьУдалить
    Ответы
    1. Мой конфиг:
      cat /etc/config/wireless
      config wifi-device radio0
      option type mac80211
      option channel 11
      option hwmode 11g
      option path 'pci0000:00/0000:00:0e.0'

      config wifi-iface
      option device radio0
      option network lan
      option mode ap
      option ssid SSID_NAME
      option encryption psk2+tkip
      option key SSID_PASSWORD
      root@router:~#

      Удалить
  6. Error opening /dev/ttyUSB0: ??????? ?? ??????? ????? ????????? ????.
    kupil usb komport nastroil port vkluchaiu brndumper i pishet tak.xachu votanovit router polnostiu udalil Flash.sdelal vsio kak zdes napisanno
    https://forum.openwrt.org/viewtopic.php?id=15934&p=27
    no brndumper ne vkluchaetsa.mojete pomoch?

    ОтветитьУдалить
    Ответы
    1. Извините, никогда не работал с brndumper. А на каком чипе USB-COM переходник?

      Удалить
    2. xachu abratno zapisat vroutere fail u-boot-bootstrap.bin.brndumper vkluchil kak napisano zdes
      https://forum.openwrt.org/viewtopic.php?id=15934&p=27
      6.1. Backup Full данных вспышкой: При этом вы можете восстановить ваш маршрутизатор в исходное состояние без проблем, всегда вы хотите. Вам нужно получить данные из 0xB0000000 к 0xb0400000.
      no zapisat v flash ne smog.est drugia programi, na windows xp/win7 chtob pomog vetom dele?brndumper ne pomog ili ia ne ponial kak rabotaet etot pragrama.
      spasibo!

      Удалить
    3. Извините что так долго не отвечал. Как я понял brndumper делает бекап оригинальной firmware до прошивки в устройство OpenWRT. После прошивки уже нет смысла пользоватся brndumper.

      Удалить
    4. dobri vecher.
      da vsio poniatno .prosta ne mogu vostanovit router.po oshibke udalil flash.mojete nauchit kak zapisat abratno boot vo vlesh.UART perekluchatel sdelal i rabotaet.

      ROM VER: 1.0.3
      CFG 04
      Read EEPROMX
      X
      UART
      daite pojalusto vse faili katorie neobxodimo dlia vostanovlenie routera i skajite kakie programi nada ispolzovat ?chtob rabotala vsio na windows/xp/7.polzovatsa linuksom ne umeiu.ocehn proshu pomogite..
      spasibo!

      Удалить
    5. Вам нужно скачать: CnCterm - http://www.telemaster.ru/cnclab/cncterm.htm, Putty - http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe, Tftp32 - http://tftpd32.jounin.net/tftpd32.html. Так же нужен uboot-UART, он в архиве в конце статьи. В CnCterm подключаемся к com порту: Options - Port select и отправляем файл u-boot.asc: Data - Upload File. После отправки закрываем CnCterm и запускаем Putty, подключаемся к роутеру. Запускаем Tftp32 и включаем в настройках tftp server. IP адрес компьютера - статический. В Putty пишем: run update_uboot и run update_openwrt. Файлы прошивки и загрузчика должны быть в папке tftp server-a. Если будут вопросы - пишите.

      Удалить
    6. vsio sdelal tochno tak kak vi skazali no kagda vkliuchaiu Putty pishet tak rotrer i vsio ne reagiruet
      ROM VER: 1.0.3
      CFG 01
      Read EEPROMX
      X
      .no,esli puskaiu fail u-boot.asc cherez terminal V1.9b.i vetom momente routere vkluchaiu perekluchaetl UART vetot moment router zagrujaetsa i rabotaet.daje mogu cherez telnet zaiti vroutere ne poimu vchom problema..vikluchaio ruoter i zanova vkluchaio i vsio pishet tak
      ROM VER: 1.0.3
      CFG 01
      Read EEPROMX
      X

      est varianti chrtob udalit vsio pamiat vflash?i zanova zapisat fail u-boot.asc ..
      spasibo..


      Удалить
    7. u-boot.asc - RAM загрузчик, служит для востановления работы роутера когда не работает основной загрузчик. После полной загрузки u-boot.asc появится надпись "Hit any key to stop autoboot:" и 3 секунды для запуска консоли загрузчика. Тогда надо нажать любую клавишу (оправить любой символ). И в консоли загрузчика прописать run update_uboot (сначала настроить tftp server, проверить и прописать IP адреса на роутере и компьютере). Если надо то можно обновить и систему - run update_openwrt. Файлы загрузчика и прошивки должны лежать в папке tftp server-а.

      Удалить
    8. oromnoe spasibooo vsio poluchilos!!!!!!
      router polnostiu vostanovilsa!!

      shas ostalsia vkluchit wifi.etc/config papke net fail wireles.kakieto faili ne xvataet vproshivke dlia vkluchenie wifi.dlia etogo chto nada delat mojete nauchit?
      spasibo!

      Удалить
    9. Надо смотреть есть ли модуль Wi-Fi (ath5) в прошивке(почти в всех прошивках есть) и правильно прописать настройки /etc/config/wireless. Я свой файл показал ранее.

      Удалить
    10. ath5 iest proshivke no ne rabotaet.pervi raz kagda postavil openwrt tagda rabotal wifi patom postavil druguiu prashivku i posle etovo ne rabotaet wifi.shas uje mnogo raz pereproshival no net rezultat chto delat kak zaswtavit chtob rabotal wifi?
      spasibo!

      Удалить