LINUX.ORG.RU

OpenSource в железе для Skylink


1

1

Выложен исходный код и прошивка для роутеров CNU-550pro

Это небольшой роутер на SoC S3C2510A в который встроен USB EVDO модем работающий в сетях Скайлинк. Роутер имеет 1 Ethernet порт, 4 Мб Flash, 16 Мб RAM. Процессор не имеет MMU.

Скайлинк официально продаёт данное устройство, но упорно продолжает нарушать GPL не выкладывая исходники прошивки, которую он распространяет вместе с CNU-550pro.

"Родная" прошивка данного устройства содержит ядро Linux и некоторое количество очень криво собранных утилит, как GPL так и проприетарных. В частности, одна из проприетарных утилит занималась тем, что следила за криво собранной бета-версией pppd-2.4.2 и когда ppp падал (а он падал постоянно), то она запускала pppd вновь. Это маленький штришок к "качеству" ПО которое поставляет Скайлинк пользователям.

CNU-550pro был слегка тивоизирован, можно было залить только прошивку с определённым заголовком из 16 байт. Вроде бы в заголовке была некая хитрая контрольная сумма, которая затрудняла создание прошивок без знания алгоритма, но как оказалось, из-за ошибки в проприетарной утилите которая прошивала прошивку, эта контрольная сумма не проверялась вообще - опять то самое "качество" ПО.

В итоге, была создана более-менее нормальная прошивка для CNU-550pro, включающая в себя помимо нормального, не падающего pppd-2.4.4, busybox, несколько полезных утилит а также SIP-proxy siproxd, который позволяет нормально работать через роутер нескольким SIP-телефонам одновременно.

Возможно, прошивка ещё сыровата, но она уже имеет больше возможностей и работает всяко стабильнее "родных" прошивок.

Исходники и сама прошивка, а так же вся история со Скайлинком и его выкрутасами - по ссылке.

>>> Подробности

★★★★★

Проверено: hibou ()
Ответ на: комментарий от Stanson

> Можете не трудиться отвечать, ваших сообщений я больше не увижу.

Увидят другие... Ну что же, мне тоже смысла нет вести с вами дискуссию, и совсем не понятно про честность и какие-то приемы, я вам выкладку сделал, совершенно безвозмездно, как могут обстоять дела, могу только пожелать успехов в борьбе с ветряными мельницами, таких Дон Кихотов не жалко...

McMCC ★★★
()

CNU-550 проблема

Еще немного о CNU-550Pro. В июле 2007 купил такой модем (8000p) для инета из Ленобласти и работал он у меня до июля 2008, когда перестал выходить в сеть и начал писать "CDMA not found". Я отнес его в ремонт скайлинка, где мне сказали, что сгорел блок связи и ремонт будет стоить 4500p. От стоимости ремонта я слегка офигел, но заплатил и мне его починили, выдав мой "сгоревший" модуль. Модуль был произведен в ДЕКАБРЕ 2007 (вспомним, что модем я купил в июле), следовательно сгоревший модуль был точно не мой или мой модуль и не горел вовсе, а с меня просто содрали деньги. Сейчас июль 2009 и модем опять не видит сеть и пишет "CDMA not found". В ремонт скайлинка я нести более не хочу. Посему вопросы: 1. Как можно диагностировать проблемы модема самому? Команды echo ATxxx > /dev/..ttyACM0 не работают 2. Если это не проблема модема, то что это и поможет ли новая прошивка? У меня стоит 0.8.0

igor_b
()
Ответ на: CNU-550 проблема от igor_b

> 1. Как можно диагностировать проблемы модема самому? Команды echo ATxxx > /dev/..ttyACM0 не работают

В новой прошивке есть терминалка - picocom. С её помощью можно нормально общаться с модемом. Инструкция как это делать - по ссылке в новости есть.
Уровень сигнала можно посмотреть командой
AT$$RSSI

> 2. Если это не проблема модема, то что это и поможет ли новая прошивка? У меня стоит 0.8.0


Неизвестно. Можем действительно может сгореть - например, если используется внешняя антенна, была гроза и статикой вышибло входные цепи. Ну или по естественным причинам - заводской брак и т.д.
Кроме того, есть вариант что прошивка, особенно 0.8.0 может сказать модему какое-нибудь волшебное слово, которое вгонит модем в ступор и потребуется командами вернуть установки по-умолчанию. Ещё надо проверить отключен ли запрос ПИН на R-UIM - при помощи любого GSM-телефона.

Stanson ★★★★★
() автор топика

Спасибо, перепрошился, работает. SkyLink - говно.

ei-grad ★★★★★
()

прошился... ruim карту так и не видит :( при подключении по usb работает. ruim карту видит только при прошивке CNU-550pro-0.8.0.bin может я что не провильно делаю?

hed1n
()
Ответ на: комментарий от hed1n

> прошился... ruim карту так и не видит :( при подключении по usb
> работает. ruim карту видит только при прошивке CNU-550pro-0.8.0.bin

> может я что не провильно делаю?


Что в syslog пишет когда не может подключится при прошивках отличных от 0.8.0?
И что пишет при прошивке 0.8.0?

Вообще странно - если запрос пин-кода выключен, то разницы в инициализации модема никакой нет, какая бы прошивка не была.
И, кстати, а как определяется - "видит" оно или "не видит"?
Дело в том, что home.shtml показывает в общем-то погоду на Марсе, а не то, что должен.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

там в закладке рin было написано not present или что-то типа того. я опять прошил 0.8.0 ->ok потом по вашей инструкции 0.1.18 ->OK 8) обрадовался давай шить open-0.2 и тут как-то все сдохло :( теперь не выдает ip и по usb не находится :(

hed1n
()
Ответ на: комментарий от hed1n

А сервисы все отключены были перед перепрошивкой? Нет? А почему? Доки читать надо внимательно.

Если был включен dhcp - тогда надо просто вручную выставить себе ИП из подсети к которой относится статический IP CNU, ну и потом перешить на старую прошивку и больше не трогать.

dhcp, да и остальные сервисы (ospfd, ripd, zebra и т.д.) там кривые (китайцы умудрились выставить размер стека для всех бинарников в 4 кило, что для мало-мальски приличной программы маловато - поэтому оно или не запускается вообще, или падает как только стек окажется больше установленного), до них ещё руки не дошли привести в нормальный вид.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

>Если был включен dhcp - тогда надо просто вручную выставить себе ИП из >подсети к которой относится статический IP CNU, ну и потом перешить на >старую прошивку и больше не трогать.

побывал, но уже похоже поздно :( он ни как не отвечает. нет ли там какого-нибудь режима для входа в "bootloader"

hed1n
()
Ответ на: комментарий от hed1n

Оно не может не отвечать, если прошивка не битая и зашилась полностью.
Либо поднимается dhcp клиент, либо статический IP.
Надеюсь PPPOE (бридж) который в CNU не работает не был включен?
Если dhcp - ну выдать CNU какой-нибудь IP.
Если статика - то тупо по этому адресу всё есть.

Есть ещё вариант сбросить на дефолтные установки - при включении долго держать кнопку reset.

бутлоадер - либо по RS232 на разъёме и там по обстоятельствам, либо нажав reset долго его удерживать - теоретически должен быть доступен по адресу 192.168.0.1 какое-то время до загрузки системы.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от hed1n

> во время загрузки девайс ребутнулся и писец

Во. Потому и...
Тогда только bootloader.

RS232 там на разъём выведен - какие конкретно ножки - не знаю.
Можно попробовать найти.
Взять конвертер USB-serial но только который низковольные сигналы выдаёт. Например какой-нибудь кабель для старых сотовых - MBUS/FBUS
или что-то подобное. Обычный 12-тивольтовый RS232 туда напрямую нельзя.

Взять вход конвертера (тот, который TX телефона и соответственно RX компьютера), запустить терминалку, и подключая к выводам последовательно перезагружать CNU. На каком-то из выводов на экран насыпется мусора (если скорость не угадана) или текста (если скорость угадана). Он и есть выход RS232. Вход - где-то рядом должен быть, искать аналогично.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от hed1n

> а если что как его шить через сом

Там бутлоадер с командами всякими.
В бутлоадере есть tftp, адрес по-умолчанию у CNU - 192.168.0.1

Как именно шить - не знаю, сам не пробовал.
Там вроде есть команда help.

Если ничего не получится - я тогда завтра сам разберусь и расскажу как чего делать - мне всё равно придётся с бутлоадером разбираться, чтобы ядро отладить нормальное. Там ведь и ядро кривое - например, не работает target REDIRECT в iptables, нет QoS вообще, хотя для Скайлинка с его идиотскими тарифами типа "безлимитный, но не более 50Мб в час" ограничивалка скорости нужнейшая вещь, ну и т.д.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от hed1n

> а если что как его шить через сом

Если что, образ cramfs располагается начиная с адреса 0x20000 во флешке - может быть надо будет это указать.

Судя по строкам в бутлоадере, команда вглядит как

tftpflash
Но лучше сначала посмотреть что оно по help пишет.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от van

Зато какой-то переходник на антену с модема стоит 500р! а это почти 30% от стоимости модема. Плюс антена сколько-то стоит. поэтому не очень-то и дешево получается в итоге.

ZoRRo
()
Ответ на: комментарий от Stanson

10 pin-овая площадка на полате это не сом, а JTAG... говорят что для подключения к нему нужно очень дорогое оборудование :( для arm контроллеров, а через него можно всё

hed1n
()
Ответ на: комментарий от hed1n

> 10 pin-овая площадка на полате это не сом, а JTAG... говорят что для
> подключения к нему нужно очень дорогое оборудование :( для arm

> контроллеров, а через него можно всё


нет, я не про плату, я про разъём на боку корпуса. Там не только USB выведен. Ответная часть разъёма идёт в комплекте с CNU в виде USB шнурка.

А дешевле JTAG нет вообще ничего. В простейшем случае - LPT порт и микросхема буфера рубля за 3-4. Вообще можно даже без буфера - у LPT открытый коллектор.
google:jtag schematics

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Очень знакомая картина - прошивка 15 не видит RUIM карту. И это, похоже, не для всех модемов. А только для 2007 9-10 месяцев выпуска.

comrad
()
Ответ на: комментарий от Mrak

> оффтопик конечно... но если взять модем Cmotech CNU-680 ( http://www.skylink.ru/pages/equip.aspx?id=16154&r=77 ) он нормально под linux работает?

Хреново работает. Эта девайсина содержит в себе встроенную флешку с дровами, в том числе и под linux. Основная проблема - девайс определяется как CD (ибо флешка в системе iso9600 - наверно чтоб случайно не стерли чего-либо, так что рекламные статьи в инете, в которых автор утверждает что данный девайс может послужить дополнительной флешкой дополнительной - мозговтирательство) и чтоб переключить эту железку в режим модема, требуется запустить спец. программку, которая находиться на этой самой флешке.

Об этой программке пара слов: скомпилирована динамически (весит 8кб), для работы девайса в режиме модема по идее всегда должна быть запущена, но каждые несколко минут выдают ошибку и программка благополучно валиться. Когда отваливается - связь может разорвать (правда не всегда), сложилось впечатление что флешка "превращается" в модем только _пока_ работает эта программулька. Для самого коннекта они простой приложили скрипт, но параметры входа в инет (одинаковые для всего скайлинка!) в этом скрипте указанныне правильно, так что приходилось копировать его на хард (где можно редактировать), и там менять их.

Но надо заметить что имеется исходник (или его часть) этой программки - правда с Xandros это не помогло - в исходнике инклюдиться какой-то scsi???.h (не помню), чего в ядре обрезанного Xandrosa видимо просто нет. Зато заработало с EasyPeasy.

Сложилось впечатление, что будь это обычном модемом без флешки, было бы на порядок лучше. В общем, об этой "фичи" я пожалел.

Если надо, могу выложить эту программку и исходник.

linalex
()
Ответ на: комментарий от linalex

> чтоб переключить эту железку в режим модема, требуется запустить спец. программку, которая находиться на этой самой флешке.

А вот это не помогает:
http://cmotech-tools.svn.sourceforge.net/viewvc/cmotech-tools/trunk/
?

Stanson ★★★★★
() автор топика
Ответ на: комментарий от comrad

после всех мытарств имеем:

BOOT

Copyright Inew digital, Korea. *82429337328 CPU : ARM940T S3C2510-a0 (C:100MHz, B:96MHz) RAM : 16MB Ver : vCNU-550pro, Aug 30 2007 Press any key to stop auto-boot in 1 seconds. Uncompress "/boot/linux.bin"... Error -3 while decompressing! 802430f0(1048576)->00008000(4096) Starting "/boot/linux.bin"...

[Boot]: printenv bootcmd=run /boot/linux.bin initrd=a00000 rdsize=300000 mac0=00:06:ac:e0:00:01 ipaddr=192.168.0.1 gateway=192.168.0.254 netmask=255.255.255.0 serverip=192.168.0.100 loadaddr=8000 baudrate=57600 cramfs=20000 filename=CNU-550pro.cramfs

но! неработает ни USB, ни ethenet

и как прошиться бедным юзерам7

comrad
()
Ответ на: комментарий от comrad

А в промпте бутлоадера help набрать?

В принципе всё понятно - на машине с ИП 192.168.0.100 поднимаем tftp сервер и кладём образ cramfs с именем CNU-550pro.cramfs

потом в бутлоадере надо дать команду tftpflash или как-то так.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

[Boot]: help help exec [cmdline]

jump address

reboot

xmodem [address]

modempower

printenv

saveenv

setenv field [value]

erase

flash

tftp [filename] [ram_addr]

tftpflash filename

tftpflashup

tftplinux

bootnet

poll second

ping host count

ls

cat

run

comrad
()
Ответ на: комментарий от comrad

Всё оказалось проще простого.

На компе делаем
# ifconfig eth0 192.168.0.100
# in.tftpd -l -v -s /var/lib/tftp

В /var/lib/tftp кладём файлик image.cramfs который можно легко получить так (из любой прошивки *.bin):
# dd if=CNU-550pro-open-0.2-stanson.bin of=image.cramfs bs=1 skip=16

Подключаем CNU кросс-патчем (не умеет оно автоматом) к eth0 компа или любым патчкордом в свитч куда воткнут eth0 компа

К разъёму CNU (идёт в комплекте как шнурок USB - надо отодрать наклейку, если она есть, и открутить 2 шурупа) припаиваемся так:
Сторона платки разъёма где припаяны 3 провода и земля:
18,22 - GND (туда припаяна земля USB)
20 - RxD CNU, соответственно TxD компа
Сторона платки разъёма где припаян один провод:
4 - TxD CNU, соответственно RxD компа
Номера контактов на платке мелкие, у кого плохое зрение - наверно поможет увеличительное стекло
Если платки вообще нет, то глядя на разъём с той стороны, которая вставляется в CNU, держа разъём тремя бороздками вниз, считая слева направо, 18,22 - GND, 20 - RxD, 21 - TxD
Лучше всего использовать какой-нибудь старый USB-serial шнурок от телефона или PDA, там сразу нужные уровни в 3.3 Вольта. Типа DLR-3 какого-нибудь. Я воспользовался кабелем для Huawei ETS-388 на PL2303.

Подключаем RS232 (57600 8N1 nocrtscts)

Запускаем терминалку

Передёргиваем питание или жмём reset на CNU

Смотрим на экран:
Bootloader

Copyright Inew digital, Korea. *82429337328
CPU : ARM940T S3C2510-a0 (C:100MHz, B:96MHz)
RAM : 16MB
Ver : vCNU-550pro, Dec 18 2006
Press any key to stop auto-boot in 1 seconds.

Тут сразу жмём какую-нибудь кнопку.

Далее всё совсем просто:

[Boot]: tftpflash image.cramfs
Loading image.cramfs from 192.168.0.100 at 0x8000 2985984bytes ok!
Performing Flash program of length 2985984 at offset 0x20000 done

Последняя стадия длится несколько минут, так что дождитесь "done"
Можно сразу проверить - всё ли правильно залилось:

[Boot]: ls
drwx 1600 /bin
drwx 24 /boot
drwx 1416 /dev
drwx 260 /etc
drwx 0 /home
drwx 1072 /htdocs
drwx 20 /lib
drwx 0 /mnt
drwx 0 /proc
-rwx 3 /sbin
-rwx 7 /tmp
drwx 52 /usr
drwx 0 /var

[Boot]: reboot

И ждём когда загрузится.
Всё.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

При прошивке версии затёрся /proc/driver/nvram. Полностью. Что там было прописано не видел. Может из-за этого и не работает порт eth. USB работает. По tftp всё чудьненько летает в bootloadere, после прошивки-тишина. Может кто выложит содержимое nvram ?

comrad
()
Ответ на: комментарий от comrad

Чудеса.

Вообще должен быть загружен модуль lnxnvram.o
Что lsmod говорит?

Прописано там, например, это:

http://89.208.116.11/ftp/pub/CNU550pro/config.cache - 64 килобайта.

Это всё надо залить в /dev/mtd1
Логин-пароль там root:admin - потом поменять надо.
ИП статический - 192.168.253.253

В принципе, в прошивке есть утилита mtd - ей можно это сделать.

mtd write config.cache /dev/mtd1

Или в бутлоадере найти как прошить файл в нужное место (начиная с адреса 0x00010000)

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

cat /dev/nvram cat: /dev/nram: No such file or directory # еще интересного: не определялась RUIM-карта прошил 0.8.0 появился и-нет и RUIM-карта дальше по инструкции прошил твою сборку попросилась на перезагрузку, набрал reboot минут 10 молчала надоело ждать, перезагрузил питанием пропал eth0, пишет # ifconfig lo Link encap:Loгal Loopbaгk inet addr:127.0.0.1 Mask:255.0.0.0 0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0(dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

#

руками могу поднять, но это не решение проблемы. Нет ни одного IP что были.

comrad
()
Ответ на: комментарий от comrad

Это потому что в /dev/nvram пусто.
Там же все настройки.

Так...

Вот бета-версия прошивки, в которой есть mtd и чтение-запись nvram иначе сделана - напрямую из /dev/mtd1, без участия lnxnvram.o

http://89.208.116.11/ftp/pub/CNU550pro/CNU-550pro-open-0.3beta-stanson.bin

После загрузки нужно будет ручками поднять eth0
Удалить /var/config.cache
# rm /var/config.cache
скопировать через tftp config.cache, который я выкладывал на место
удалённого - /var/config.cache
# cd /var
# tftp -g -r config.cache TFTP_SERVER_IP
Попробовать
# nvram -l
Должен вывалиться большой список параметров.

Посмотреть как минимум на параметр network0/address
# nvram -g network0/address
Установить нужный, если тот, который установлен не подходит
# nvram -s network0/address=192.168.0.1

Установить нужный логин-пароль
# nvram -s sysmode0/adminname=root
# nvram -s sysmode0/adminpass=newpassword

После чего записать всё на место
# nvram -c

Перезагрузится. По-идее - должно всё стать хорошо.

Stanson ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Прошился на 3beta. Вот что происходит с модемом. поднимается usb, немного стоит и потом отрубается. Состояние RUIM карты - не присутствует, хотя она есть и работает.

И вот что странно. Точно такое состояние при прошивке 0.1.18 При прошивке 0.8.0 карта видна и интернет по IP виден. Но перестали разрешаться имена в адреса.

# usb.c: new USB device s3c2510-1, assigned address 6 ttyACM1: USB ACM device usb_serial_probe:: interface 12101264 usb_serial_probe descriptor matchs usbserial.c: Generic converter detected usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs) usb.c: USB disconnect on device s3c2510-1 address 6 usbserial.c: Generic converter now disconnected from ttyUSB0 hub.c: new USB device s3c2510-1, assigned address 7 ttyACM0: USB ACM device usb_serial_probe:: interface 12100752 usb_serial_probe descriptor matchs usbserial.c: Generic converter detected usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs) hub.c: new USB device s3c2510-2, assigned address 8 usb.c: USB device not accepting new address=8 (error=-110) usb.c: USB disconnect on device s3c2510-1 address 7 usbserial.c: Generic converter now disconnected from ttyUSB0 hub.c: new USB device s3c2510-1, assigned address 9 ttyACM1: USB ACM device usb_serial_probe:: interface 12100880 usb_serial_probe descriptor matchs usbserial.c: Generic converter detected usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs) usb.c: USB disconnect on device s3c2510-1 address 9 usbserial.c: Generic converter now disconnected from ttyUSB0

comrad
()
Ответ на: комментарий от Stanson

Есть несколько мыслей по поводу улучшений

1 Вынести все настройки модема в отдельную секцию инициализации

2 Убрать все настройки, аппаратно-зависимые от модуля модема из бинарника. На моем модеме команда 'AT$$SIP_SET=0' наглухо вырубает модем. Наверняка есть и другие команды.

3 Если кто разобрался с ВЕБ-интерфейсом - поделитесь, как заставить вкладку с ПИН отображать параметры правильно.

comrad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.