1 (edytowany przez jkdobro 2007-04-08 08:32:45)

Temat: [HOWTO] Modem USB + neostrada (PPPoATM)

Instalacja modemu USB Alcatel/Thomsom SpeedTouch330 w OpenWTR (neostrada)
Wersja: 1.06
Ostatnia zmiana:

Wielu użytkówników Neostrady posiada modem dostarczany wraz z usługą, podłączany do portu USB. Można go również wykorzystać do połączenia z internetem przy pomocy routera wspieranego przez OpenWRT posiadającego porty USB.
Do stworzenia opisu wykorzystany został router ASUS WL-500gP z OpenWRT RC6 (kernel 2.4.30) oraz modem Alcatel/Thomson SpeedTouch330 (UWAGA!!!! w opisany poniżej sposób NIE MOŻNA podłączy mademu USB Sagem)

Co będzie nam potrzebne?
- router z portem USB
- modem USB SpeedTouch330
- pakiety do obsługi USB
- programy do obsługi modemu
- programy do zestawienia połączenia PPPoATM

Wszystkie niezbędne moduły i programy dostępne są pod tym linkiem


USB

W pierwszej kolejności należy skonfigurować USB na routerze. Wystarczy zainstalować kilka pakietów:

ipkg install kmod-usb-core
ipkg install kmod-usb-uhci           # dla innych routerów niz WL-500gP, moze być potrzebne OHCI
ipkg install kmod-usb-usb2           # nie jest wymagane dla modemu SpeedTouch330 (USB v1.1)

Od razu zainstalujemy pakiety do obsługi modemu i PPP:

ipkg install kmod-usb-acm
ipkg install libgcc
ipkg install kmod-ppp

Następnym krokiem jest podmontowanie systemu plików:

mount -t usbdevfs usbdevfs /proc/bus/usb

USB zainstalowane. Teraz możemy sprawdzić, czy modem jest rozpoznawany przez router. W tym celu maleć podłączyć modem do wolnego gniazda USB w routerze. Router powinien rozpoznać modem. Aby to sprawdzić, wystarczy wydać polecenie:

# cat /proc/bus/usb/devices

Jeśli wszystko jest OK, powinniśmy otrzymać w odpowiedzi coś takiego:

(...)
P:  Vendor=06b9 ProdID=4061 Rev= 2.00
S:  Manufacturer=ALCATEL
S:  Product=Speed Touch 330
(...)

Warto zapamiętać wersję modemu (Rev=X.XX). Przyda się przy wyborze rodzaju firmware (na rynku spotykane są modele 2.00 i 4.00)


Instalacja modułów i programów

Kolejnym krokiem będzie uzupełnienie zasobów o wymagane moduły i programy.
Pliki modułów kernela (obsługa modemu): ppp_synctty.o, atm.o, n_hdlc.o; (obsługa ppp): ppp_mppe_mppc.o,
katalog docelowy: /lib/modules/2.4.30

Pozostałe pliki (program modemu): modem_run; (firmware): KQD6_3.012 (dla wersji modemu Rev= 2.00), ZZZL_3.012 (dla wersji modemu Rev= 4.00); oraz plugin dla PPP: pppoa3,
i umieścimy je w utworzonym przez nas katalogu /usr/local (lub inny wedle swego uznania).

Brakujące moduły sa dostępne TUTAJ oraz firmware do SpeedToucha TUTAJ. Należy rozpakować je w katalogu np.: /tmp i poprzenosić w właściwe miejsca. Najprościej można wykonać to wydając polecenia:

cd /tmp
wget http://eko.one.pl/openwrt/spdtch-pppoa_2.4.30-brcm_mipsel.tgz
tar -zxvf spdtch-pppoa_2.4.30-brcm_mipsel.tgz
mv *.o /lib/modules/2.4.30
mkdir -p /usr/local
mv modem_run /usr/local
mv pppoa3 /usr/local

Następnie ładujemy potrzebne moduły:

insmod slhc
insmod ppp_generic
insmod ppp_synctty
insmod ppp_async
insmod ppp_mppe_mppc
insmod atm
insmod n_hdlc

Firmware można pobrać z adresu http://www.speedtouchdsl.com/download/d … e_3012.zip, a następnie rozpakować na komputerze stacjonarnym i wyodrębnić dwa pliki: KQD6_3.012 oraz ZZL_3.012. Następnie należy je przesłać (np. instalując wcześniej demona ftp, n p vsftp) do katalogu /usr/local.


Instalacja firmware w modemie

Przejdziemy teraz do załadowania firmware do modemu. W tym celu należy podłączyć przewód linii telefonicznej do modemu (oczywiście musimy mieć na tej linii aktywną usługę neostrady) i wydać polecenie:

/usr/local/modem_run -v 1 -m -f /usr/local/KQD6_3.012

W trakcie ładowania pliku firmware, zaczną migać diody urządzenia. Będzie to oznaczać synchronizację linii. Po kilkunastu sekundach modem się ustabilizuje. Diody powrócą do zielonego koloru.
Prawidłowe załadowanie firmware w modemie możemy sprawdzić wydając komendę:

# logread

Jan  1 00:00:21 (none) user.info : Info  modem_run version 1.3.1 started by root uid 0
Jan  1 00:00:21 (none) user.info : Info  Found SpeedTouch USB modem
Jan  1 00:00:21 (none) user.info : Info  Modem revision: 0200
Jan  1 00:00:23 (none) user.info : Info  Best offset     36 with probability 100%
Jan  1 00:00:23 (none) user.info : Info  Best offset    983 with probability 100%
Jan  1 00:00:23 (none) user.info : Info  Firmware info (CRC:0xd80bf9f7, Size:991, Checked: Yes, Alcatel/Thomson Boot block (old))
Jan  1 00:00:23 (none) user.info : Info  Best offset   1027 with probability 100%
Jan  1 00:00:23 (none) user.info : Info  Best offset 762642 with probability 100%
Jan  1 00:00:23 (none) user.info : Info  Firmware info (CRC:0x78039fed, Size:762650, Checked: Yes, 3.0.6 - MacOSX - Win32)
Jan  1 00:00:25 (none) user.info : Info  BLOCK1 :    991 bytes   uploaded : OK
Jan  1 00:00:26 (none) user.info : Info  BLOCK2 :    511 bytes downloaded : OK
Jan  1 00:00:29 (none) user.info : Info  BLOCK3 : 762650 bytes   uploaded : OK
Jan  1 00:00:30 (none) user.info : Info  BLOCK4 :    511 bytes downloaded : OKInfo  Modem reference : 3566067A......
Jan  1 00:00:41 (none) user.info : Info  [monitoring report] ADSL link went up
Jan  1 00:01:00 (none) user.info : Info  ADSL synchronization has been obtained
Jan  1 00:01:00 (none) user.info : Info  ADSL line is up (2496 kbit/s down | 320 kbit/s up)

UWAGA!!! Jeśli Twoja wersja modemu jest Rev= 4.00, to należy zmienić w wywołaniu modem_run nazwę pliku firmware na: ZZZL_3.012

Pozostało nam jeszcze zestawienie połączenia. Więc do dzieła.....


Konfiguracja PPP dla neostrady

W wersji kernela 2.4.30, do skonfigurowania pppd użyjemy pluginu pppoa3. Mosimy stworzyć plik konfiguracyjny:

cd /etc/ppp/peers
touch neostrada-pppoa
nano neostrada-pppoa

(lub wykorzystując inny edytor) uzupełnić plik neostrada-pppoa następującymi wpisami:

debug
kdebug 1
lock
noipdefault
defaultroute
pty "/usr/local/pppoa3 -v 1 -e 1 -c -m 1 -vpi 0 -vci 35"
asyncmap 0
lcp-echo-interval  2
lcp-echo-failure   7
sync
user TWOJ_LOGIN@neostrada.pl
noauth
holdoff 3
persist
maxfail 5
mru 1500
mtu 1500

Oczywiście należy zmienić TWOJ_LOGIN@neostrada.pl na login przydzielony podczas rejestracji usługi Neostrada.
Kolejnym krokiem jest wprowadzenie wpisów loginu i hasła do plików chap-secrets i pap-secrets w katalogu /etc/ppp. Login i hasło zostały ci nadane przy rejestracji neostrady. Modyfikacji należy dokonać dowolnym edytorem, np:

nano /etc/ppp/chap-secrets

Wyglądać powinno to tak:

# Secrets for authentication using CHAP
# client        server         secret         IP addresses
TWOJ_LOGIN@neostrada.pl * TWOJE_HASLO *

TWOJ_LOGIN@neostrada.pl i TWOJE_HASLO należy zastąpić loginem i hasłem z rejestracji neostrady. Taki sam wpis należy wykonać w pliku /etc/ppp/pap-secrets.


Zestwienie połączenia PPP

Pozostał nam już tylko zestawienie połączenia i kilka spraw porządkowych. W pierwszej kolejności ustawiamy zmienne nvram, żeby skonfigurować prawidłowo firewall, DNS i route.

nvram set wan_device=ppp0
nvram set wan_ifname=ppp0
nvram set lan_dns="194.204.152.34 217.98.63.164"    # jesli jest juz ustawione, to mozna nie zmieniać
nvram commit

/etc/init.d/S35firewall               # restart firewall
route del default gw 192.168.2.1      # restart route (192.168.2.1 - IP Twojego routera)

Teraz możemy już odpalić połączenie PPP. Należy wydać polecenie:

pppd call neostrada-pppoa

W efekcie w Syslog powinny pojawić się wpisy dotyczące nawiązania połączenia. W celu sprawdzenia wykonujemy logread:

Jan  1 00:01:02 (none) kern.notice pppd[732]: pppd 2.4.3 started by root, uid 0
Jan  1 00:01:02 (none) kern.debug pppd[732]: using channel 2
Jan  1 00:01:02 (none) kern.info pppd[732]: Using interface ppp0
Jan  1 00:01:02 (none) kern.notice pppd[732]: Connect: ppp0 <--> /dev/pts/1
Jan  1 00:01:02 (none) kern.debug pppd[732]: rcvd [LCP ConfReq id=0xc <auth chap MD5> <magic 0x4c90d0ea>]
Jan  1 00:01:02 (none) kern.debug pppd[732]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x21d52310> <pcomp> <accomp>]
Jan  1 00:01:02 (none) kern.debug pppd[732]: sent [LCP ConfAck id=0xc <auth chap MD5> <magic 0x4c90d0ea>]
Jan  1 00:01:05 (none) kern.debug pppd[732]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x21d52310> <pcomp> <accomp>]
Jan  1 00:01:05 (none) kern.debug pppd[732]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x21d52310> <pcomp> <accomp>]
Jan  1 00:01:05 (none) kern.debug pppd[732]: sent [LCP EchoReq id=0x0 magic=0x21d52310]
Jan  1 00:01:05 (none) kern.debug pppd[732]: rcvd [CHAP Challenge id=0x31 <046c0e6e53845b7b64b083a22b2e73449ff738636c>, name = "wawa_pl"]
Jan  1 00:01:05 (none) kern.debug pppd[732]: sent [CHAP Response id=0x31 <80327be01735cd4488e7c0a8f25f0921>, name = "XxXxXx@neostrada.pl"]
Jan  1 00:01:05 (none) kern.debug pppd[732]: rcvd [LCP EchoRep id=0x0 magic=0x4c90d0ea]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [CHAP Success id=0x31 ""]
Jan  1 00:01:06 (none) kern.info pppd[732]: CHAP authentication succeeded
Jan  1 00:01:06 (none) kern.notice pppd[732]: CHAP authentication succeeded
Jan  1 00:01:06 (none) kern.debug pppd[732]: sent [CCP ConfReq id=0x1 <mppe -H -M -S -L -D +C>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [LCP ProtRej id=0xd 80 fd 01 01 00 0a 12 06 00 00 00 01]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [IPCP ConfNak id=0x2 <addr 83.11.170.191>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: sent [IPCP ConfReq id=0x3 <addr 83.11.170.191>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [IPCP ConfReq id=0xf0 <addr 213.20.2.228>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: sent [IPCP ConfAck id=0xf0 <addr 213.20.2.228>]
Jan  1 00:01:06 (none) kern.debug pppd[732]: rcvd [IPCP ConfAck id=0x3 <addr 83.11.170.191>]
Jan  1 00:01:06 (none) kern.notice pppd[732]: local  IP address 83.11.170.191
Jan  1 00:01:06 (none) kern.notice pppd[732]: remote IP address 213.20.2.228
Jan  1 00:01:06 (none) kern.debug pppd[732]: Script /etc/ppp/ip-up started (pid 755)
Jan  1 00:01:06 (none) kern.debug pppd[732]: Script /etc/ppp/ip-up finished (pid 755), status = 0x1

Jeśli otrzymaliśmy podobny wynik, to znaczy że połączenie został nawiązane prawidłowo. Możemy to dodatkowo sprawdzić wydając polecenie: ifconfig ppp0

ppp0      Link encap:Point-to-Point Protocol
          inet addr:83.11.170.191  P-t-P:213.20.2.228  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:383 (5.0 MiB)  TX bytes:81 (2.0 MiB)

Wykonamy jeszcze restart dnsmasq:

killall dnsmasq
/etc/init.d/S50dnsmasq start

....... i wszystko mamy gotowe.

Sprawdź jeszcze tabelę routingu i czy DNS pracuje prawidłowo. Wydaj kolejno polecenia:

route -n
ping google.com           # ping mozna przerwać przy pomocy Ctrl+C

Jeśli wszystko ustawione jest prawidłowo otrzymasz:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
213.25.2.228    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
0.0.0.0         213.20.2.228    0.0.0.0         UG    0      0        0 ppp0

oraz

PING google.com (64.233.167.99): 56 data bytes
64 bytes from 64.233.167.99: icmp_seq=0 ttl=245 time=158.4 ms
64 bytes from 64.233.167.99: icmp_seq=1 ttl=245 time=145.6 ms
64 bytes from 64.233.167.99: icmp_seq=2 ttl=245 time=148.3 ms
64 bytes from 64.233.167.99: icmp_seq=3 ttl=244 time=155.7 ms
64 bytes from 64.233.167.99: icmp_seq=4 ttl=244 time=306.6 ms

--- google.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 145.6/182.9/306.6 ms

.

Automatyzacja - skrypty

Do pełnego szczęścia potrzene są jeszcze skrypty pozwalające na zautomatyzowanie procesów uruchamiania wszystkich wymaganych programów.

Poniższe skrypty nie są jeszcze całkowicie przetestowane, ale z powodzeniem działają na moim routerze.

Całość składa się z 3 skryptów.

1. Główny skrypt modem.sh należy umieścić w katalogu /usr/local.
Skrypt sprawdza co 1min czy połączenie z neostradą jest nawiązane. Jeśli stwierdzi że nastąpiło rozłączenie podejmuje próbę zestawienia połączenia (aż do skutku). Dodatkowo istnieje możliwość zrobienia restartu połączenia co jakiś określony czas (w przykładzie codziennie o godz. 2:30 - neostrada zmienia IP co 24 godz.)
Dodatkowo skryp pozwala na ręczne (lub z innego programu) sterowanie pracą modemu. Możliwe są start dla modemu oraz start, zatrzymanie i restart dla połączenia (ppp0). Aby sprawdzić składnie wywołania skrypu, uruchom go bez wpisywania jakichkolwiek opcji.

#!/bin/sh
## /usr/local/modem.sh
### JKD - modem speedtouch330 - v0.3.5 - 2007-03-03
#  skrypt wymaga poprawionego skryptu S60cron

## zmienna plikowa - jest jesli ppp0 jest UP
f_ppp0_pid="/var/run/ppp0.pid"
f_ppp0_up="/var/run/ppp0.up"

## zmienna plikowa - jest kiedy dziala proc. cron_1m_run
f_cron_1m_run="/var/run/cron_ppp0_1m.run"

## uruchomienie co 1 min
cron_1m_file="/var/spool/cron/root/modem_1m"
cron_1m_cmd="* * * * * /usr/local/modem.sh cron_1m_run"

## uruchomienie codziennie o godz. 2:30
cron_24h_file="/var/spool/cron/root/modem_24h"
cron_24h_cmd="30 2 * * * /usr/local/modem.sh cron_24h_run"


## Restart wszystkich programow wymagajacych aktualnego IP
restart_usr_progs() {
    touch $f_ppp0_up    # nie usuwac tej linii
    ## .....ponizej MOZNA DOPISYWAC wlasne programy......

    ## tymczasowo - blad w skrypcie synchronizacji czasu
    #/etc/init.d/S??ntp
    /usr/sbin/ntpclient -c 1 -s -h pool.ntp.org

    ## aktualizacja DynDNS
    /etc/init.d/S??ez-ipupdate restart
}
## NIE MODYFIKOWAC ponizszego kodu


ppp0_up() {
    ## sprawdzenie czy jest uruchomiony modem_run
    pid=`pidof modem_run`
    if [ ! -z "$pid" ]; then
        killall pppd >/dev/null 2>&1
        ## modem bug: w buforze modemu zostaja smieci - nieprawidlowo odpala pppd
        ## modem hacks: czyszczenie bufora modemu
        pppd call neostrada-pppoa >/dev/null 2>&1
        sleep 2
        killall pppd >/dev/null 2>&1
        ## modem hacks - end
        pppd call neostrada-pppoa
        rm ${f_ppp0_up}
    fi
}

ppp0_start() {
    ppp0_up
    rm ${f_cron_1m_run}
    echo "$cron_1m_cmd" > $cron_1m_file    # wpis 1m do crontabs
    echo "$cron_24h_cmd" > $cron_24h_file    # wpis 24h do crontabs
    cron_restart
}

ppp0_stop() {
    rm ${cron_1m_file}        # usuniecie wpisu 1m z crontabs
    rm ${cron_24h_file}        # usuniecie wpisu 24h z crontabs
    cron_restart
    killall pppd >/dev/null 2>&1
    rm ${f_cron_1m_run}
}

cron_1m_run() {
    if [ ! -f $f_cron_1m_run ]; then
        touch $f_cron_1m_run
        if [ ! -f $f_ppp0_pid ]; then
            rm ${f_ppp0_up}
            ## podniesienie ppp0
            ppp0_up
        else
            if [ ! -f $f_ppp0_up ]; then
                ## restart usr_progs
                restart_usr_progs
                touch $f_ppp0_up
            fi
        fi
    fi
    rm ${f_cron_1m_run}
}

cron_restart() {
    /etc/init.d/S??cron restart
}

modem_start() {
    ## sprawdzenie czy modem jest podlaczony do USB
    if grep "Vendor=06b9 ProdID=4061" /proc/bus/usb/devices; then
        ## sprawdzenie czy jest uruchomiony modem_run
        pid=`pidof modem_run`
        if [ -z "$pid" ]; then
            ## uruchomienie wymaganych modulow
            for module in slhc ppp_generic ppp_synctty ppp_async ppp_mppe_mppc atm n_hdlc; do
                /sbin/insmod $module >/dev/null 2>&1
            done
            mount -t usbdevfs usbdevfs /proc/bus/usb
            #/usr/local/modem_run -v 1 -m -f /usr/local/KQD6_3.012 2>/var/log/modem_run.log
            /usr/local/modem_run -v 1 -m -f /usr/local/KQD6_3.012
            route del default gw 192.168.2.1
            ## odpalenie ppp0 i restart programów użytkownika
            ppp0_start
        else
            echo "Modem_run is already started"
        fi
    else
        echo "USB modem not found: $usb_dev"
    fi
}

case "$1" in
    modem_start)
        modem_start
    ;;

    ppp0_start|ppp0_restart)
        ppp0_start
    ;;
    ppp0_stop)
        ppp0_stop
    ;;

    cron_1m_run)
        cron_1m_run
    ;;
    cron_24h_run)
        ppp0_start
    ;;

    *)
        echo "Usage: modem.sh {modem_start|ppp0_start|ppp0_stop|ppp0_restart}"
    ;;
esac

2. Skrypt S65neostrada należy umieścić w katalogu /etc/init.d.
Skrypt zapewnia automatyczne zestawienie połączenia przy restarcie routera.

#!/bin/sh
## /etc/init.d/S65neostrada
## JKD
/usr/local/modem.sh modem_start

3. Skrypt S60cron należy umieścić w katalogu /etc/init.d.
Jest to poprawiony oryginalny skrypt z OpenWRT. Niestety oryginał ma błąd (objawia się m.in. nie wyświetlaniem w webif zawartości crontabs). Zmiany nie zakłucają standardowej pracy crona (z innymi programami), jednak wprowadzają modyfikacje używane przez skrypt modem.sh.
UWAGA!!!!!! Poprawka w S60cron jest wymagana do prawidłowej pracy skryptu modem.sh.

#!/bin/sh
#
# crond           Starts crond
# 
# jkd modify: (v0.1.3 - 2007-03-03)
#   - crond <- /var/spool/cron/crontabs/root
#        /var/spool/cron/crontabs/root <- /etc/crontabs/root + /var/spool/cron/root/*
#

crondir_base="/var/spool/cron"
crondir="$crondir_base/crontabs"
crondir_add="$crondir_base/root"

cron_root_realfile="/etc/crontabs/root"
cron_root_file="$crondir/root"

mkdir -p $crondir
mkdir -p $crondir_add

start() {
    if [ "$(nvram get cron_enable)" -eq "1" ]; then
        pid=`pidof crond`
        if [ -z "$pid" ]; then 
            #regenerate root crontab file
            cat $cron_root_realfile > $cron_root_file
            for root_cron_entry in $crondir_add/*; do
                cat $root_cron_entry >> $cron_root_file
            done

            echo -n "Starting crond: "
            ( /usr/sbin/crond -c $crondir -L /dev/null && echo "OK" ) || echo "ERROR"
        else
            echo -n "crond is already started"
        fi
    else
        echo -n "crond is disabled"
    fi
}

stop() { 
    pid=`pidof crond`
    if [ -n "$pid" ]; then
        echo -n "Stopping crond: "
        ( { 
            kill $pid >/dev/null 2>&1
        } && echo "OK" ) || echo "ERROR"
    else
        echo "crond is not running"
    fi
}

restart() {
    stop
    sleep 1
    start
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart|reload)
        restart
    ;;
    *)
        echo $"Usage: $0 {start|stop|restart|reload}"
        exit 1
esac

exit $?

Po umieszczeniu skryptów na swoim miejscu trzeba pamiętać o nadaniu im atrybutów wykonalości:

chmod +x /usr/local/modem.sh
chmod +x /etc/init.d/S65neostrada
chmod +x /etc/init.d/S60cron

Teraz już wystarczy tylko wykonać restart routera wydając polecenie:

reboot

I to już wszystko. Możesz cieszyć się neostradą prze modem USB. smile

PS. WIELKIE PODZIĘKOWANIA dla Cezarego, za pomoc w odpaleniu całości i cierpliwość dla mojej osoby smile. Bez niego nie udało by mi się tego zrobić. DZIĘKUJĘ!


Pozdrawiam Jarek

2

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Jarek, można to wrzucić do wiki openwrt pl? Jeżeli tak, to umieść to proszę na http://openwrt.pl/ (musisz sobie konto zrobić) lub ja to zrobię.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Pewnie. Nawet trzeba smile Jeśli nie będzie ta dla Ciebie kłopot, bo chyba masz tam konto, to bardzo bym Cię prosił o wrzucenie. Jeszcze tylko dopiszę pobranie paczki i firmware i dam znać.

4

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Ok, czekam na info i wrzucę to do wiki.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Jest gotowe. Ale jest jeden mały problem. Jak na WL500 rozpakować zipa.

cd /tmp
wget http://www.speedtouchdsl.com/download/drivers/USB/SpeedTouch330_firmware_3012.zip
gunzip SpeedTouch330_firmware_3012.zip
mv KQD6_3.012 /usr/local
mv ZZZL_3.012 /usr/local

gunzip nie jest standerdowo zainstalowany. Czy można czymś inny, standardowo dostępnym na WL, to rozpakować?

6

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

No co ty opowiadasz. Przecież gunzip jest busyboxa. Nadal mówimy o rc6?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez jkdobro 2007-01-21 21:14:48)

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Faktycznie. Jest. Drze się o złe rozszerzenie jest .zip, a jakie powinni być?

EDIT:
Chyba .gz. Trzeba będzie zmienić rozszerzenie.

EDIT:
Po zmianie na .gz daje: Invalid Magic
Da się z tym coś zrobić?

8

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Całość dostępna jest także w Wiki OpenWrt PL pod adresem http://artekw.suwalki.kom.pl/wiki/doku. … Aneostrada

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Super!!!!! Wielkie dzięki smile

10

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Tak sie nie da. busybox RC6 nie obsługuje unzipa, więc chyba musisz dodać info, że ściągnięciu firmware na hosta, rozpakowaniu winzipem/unzipem i przesłaniu tego do openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez Tom0000 2007-02-17 12:35:02)

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Witam.
Czy opisane mozliwosci dotycza tylko modemu speedtouch 300? Posiadam speedtouch 330. Moze ktos wie czy do tej wersji jest osobny firmware czy pasuje ten sam co tu uzyty? W sumie wtekscie mowi sie o 300 a link do firmware jest do 330, wiec pewnie chodza na tym samym sofcie.

12

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Pomyłka Jarka w tekście. Oczywiście  jest o speedtouch 330, tyle  że jest ich kilka wersji i być może potrzebny jest inny firmware

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

jkdobro,
ten modem jest zasilany poprzez zlacze usb. Delux ma zasilacz 5V /2A , choc te 2A sa bardzo problematyczne. Jak sie czyta cokolwiek o podlaczaniu urzadzen po usb, zawsze ludzie pisza aby zwraca uwage jaki power bedzie pobierac urzadzenie bo zasilacz ruterka nie podola.
Jaki zasilacz jest do premium ? Lepszy czy taki sam? A moze wymieniles go na inny , wiekszy ? A moze jest taki sam i radzi sobie zasilac dodatkowo modem ?

14

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Używam standardowego zasilacza od Premium. Nie pamiętam jakie ma parametry (wydaje mi się że podobne jak Twój - muszę sprawdzić wieczorem). Zasilacz nie przegrzewa się więc nic z nim nie robiłem.
Nie znam poboru prądu samego modemu. Jedyne dane to:

# cat /proc/bus/usb/devices

(...)
P:  Vendor=06b9 ProdID=4061 Rev= 2.00
S:  Manufacturer=ALCATEL
S:  Product=Speed Touch 330
S:  SerialNumber=0090D0AA1DC6
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
(...)

15

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Zasilacz jest taki sam 5V/2A. Jak pisałem, podłączony HDD 2,5'' (5V, 500mA) czasami nie potrafi wystartować, ale później już działa bez problemu.

Jak Tom0000 pisał, wyjściem jest flash (karta SD 2GB kosztuje 50pln brutto...), pendrive lub microdrive. Pobór prądu to nie wiecej niż 50mA, więc jest o co walczyć.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

16

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

jkdobro napisał/a:

Instalacja modemu USB Alcatel/Thomsom SpeedTouch330 w OpenWTR (neostrada)

Pozostał nam już tylko zestawienie połączenia i kilka spraw porządkowych. W pierwszej kolejności ustawiamy zmienne nvram, żeby skonfigurować prawidłowo firewall, DNS i route.

nvram set wan_device=ppp0
nvram set wan_ifname=ppp0
nvram set lan_dns="194.204.152.34 217.98.63.164"    # jesli jest juz ustawione, to mozna nie zmieniać
nvram commit

Dajmy na to firewall. Po zainstalowaniu wszystkich pakietow:

root@OpenWrt1:~# nvram show | grep "ppp"
size: 1245 bytes (31523 left)
pppoe_ifname=
pppoe_ifnames=

Wramach wykonywania /etc/firewall.user system ma predefiniowana zmienna WAN , ktora przyjmie wartosc wan_ifname czyli ppp0 i do niego jesli sie nie myle beda sie odnosic predefiniowane filtry: prerouting_wan i forwarding_wan. No i pytanie. A skad system bedzie wiedzial co to jest ppp0. W nvram nie mam definicji ppp0 .

17

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Nie musisz. W definicjach iptables możesz podać nawet interfejsy których jeszcze nie ma. System sam sobie sprawdzi na jakim interfejsie przyszedł pakiet i gdzie go skierować. Zrobione jest to specjalnie, aby reguły firewala dostosowały się do ppp0 jako interfejsu wejściowego - wan.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

To wlasciwie kiedy w systemie pojawia sie interfejs ppp0? Po wyslaniu drivera do modemu i zainicjowaniu polaczenia neostrady ?

19

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Tak. Po zainicjowaniu pppd.

Tak swoją drogą - zamiast modemu neostrady można podpiąć przecież kabel z komórką i mieć ruter z wifi rozdzielający gprs/edge/umts. Takie zastępstwo wrt543g3 smile. Takiego połączenia można użyć jako łącza zapasowego w przypadku padu łącza głównego. Lub jako łącze podstawowe jeżeli mieszka się/jest się obecnie w miejscu gdzie nie ma innej możliwości podłączenia a potrzebujemy udostępnić łącze kilku komputerom.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20 (edytowany przez Tom0000 2007-02-25 19:02:38)

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

W skrypcie modem.sh jest:

ppp0_up() {
    ## sprawdzenie czy jest uruchomiony modem_run
    pid=`pidof modem_run`
    if [ -z "$pid" ]; then
        killall pppd >/dev/null 2>&1
        ## modem bug: w buforze modemu zostaja smieci - nieprawidlowo odpala pppd
        ## modem hacks: czyszczenie bufora modemu
        pppd call neostrada-pppoa >/dev/null 2>&1
        sleep 2

Czy w zamysle autora bylo sprawdzanie czy w pamieci nie ma pidu aplikacji modem_run i tylko w takim przypadku odpalanie pppd ?
Jak zmienilem warunek na :

    if [ ! -z "$pid" ]; then

zaczelo mi wszystko startowac.
Jak na razie odnioslem polowiczny sukces. Po wypieciu kabla telefonicznego z modemu i wpieciu ponownie komunikacja nie zostala nawiazana. Musze sie przyjrzec crondowi na moim routerku.

Edit:
wyglada, ze na koniec bootowania cron jest wylaczony.


Koniec bootowania ... loguje sie
root@OpenWrt1:~# ps | grep "crond"
  851 root        348 S   /usr/sbin/crond -c /var/spool/cron/crontabs -L /var/log/crond.log
  968 root        280 S   grep crond

i teraz ciekawostka , przez okolo 2 minuty poprzez ftpserver przegladam /tmp (/tmp/spool/cron/crontabs/root pusty) i ciekawostka:
root@OpenWrt1:~# /etc/init.d/S??cron restart
crond is not running
Starting crond: OK
(/tmp/spool/cron/crontabs/root z oboma zadaniami od modem.sh)


Czy modem.sh nie powinien sprawdzic czy w /tmp/spool/cron/crontabs/root jest jego zadanie i jak nie ma to je dopisac ?
A moze jeszcze lepiej dodac zadania neostrady do /etc//crontabs/root ?

21

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Ja neo nie mam, więc pomagam czysto teoretycznie. Zróbcie lepszą wersję, bardziej prostą i przejrzystą, spakietujemy to i będzie gotowiec smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

22 (edytowany przez Tom0000 2007-02-25 20:53:41)

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Nie znalazlem powodu takiego zachowania. Na razie w S98 restartuje sobie crond-a i wyglada ze to wystarcza.

No i nasuwa mi sie taka watpliwosc.
Jesli neostrade zablokuje w init.d to nie ma problemu aby ja odpalic z palca po zalogowaniu. Dlaczego wiec jest to startowane z dosc niskim S ? Czy nie wystarczyloby zrobic to na sam koniec i w dodatku jako watek bez czekania na zakonczenie startowania polaczenia ?

23

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Ale dlaczego miało by się zablokować? ppp z natury dość szybko umiera jak nie może nawiązać połączenia, wiec wiekszego problemu tu nie ma. A numer ma taki niski, to później masz kilka usług zależnych od podniesionego interfejsu, dnsmasq chociażby (tak, wiem, można ręcznie później restartować usługę)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

Blokowalem aby po odpaleniu z palca widziec co sie logowalo.

25

Odp: [HOWTO] Modem USB + neostrada (PPPoATM)

@jkdobro: można to wrzucić to wiki, czy będziesz coś jeszcze dodawał? Tom0000 mówił o problemach z wyciekiem pamięci, jak jest u Ciebie?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.