ПЕРЕДЕЛКА МОДЕМА В 3G РОУТЕР

САМОДЕЛЬНЫЕ РАДИОУСТРОЙСТВА

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

 Самоделки для компьютера

:: ПЕРЕДЕЛКА МОДЕМА В 3G РОУТЕР ::


   Инструкция по самостоятельной переделке модема в 3G роутер. Самая распространённая проблема при покупке модема заключается в том, что нет такого модема, который бы не зависал через некоторое время. Задача заключается в следующем - сделать небольшой стабильный 3G роутер. И в этом нам помогут материалы с сайта Хабрахабр. Для работы нужно:

• Роутер DIR-320
• 3G модем
• Внешняя антенна


   Для начала эксперимента воспользуемся стационарным ПК с Linux. Настроив 3G соединение, посредством Huawei E173, запустить вызов команды ping + wget с интервалом раз в 10 минут. Соединение длилось около 4 часов, после чего модем перестал отвечать на PPP команды, AT при этом работали. Попробуем потушить USB порт:

1. Находим модем из списка всех USB устройств:

2. for f in `ls /sys/bus/usb/devices/*/product`; do echo -e "$f\t`cat $f`"; done

3. Выключаем порт на 5 секунд а потом включаем:

4. echo "suspend” | sudo tee /sys/bus/usb/devices/1-1/power/level

5. sleep 5

6. echo "on" | sudo tee /sys/bus/usb/devices/1-1/power/level

   В ходе эксперимента мы увидели, что все отлично перезагружается. И соединение может быть опять установлено. Повторим эксперимент с четырьмя прошивками для роутера: D-Link, Asus, OpenWRT или DD-WRT, но ни в одной из прошивок не оказалось возможности управления питанием USB. И после перезагрузки роутера модем оставался проинициализированным. Далее разберем роутер. Нужно сделать модернизацию платы и источника питания.

   Нужно построить дистрибутив на базе OpenWRT самостоятельно, при этом с минимумом предустановленных пакетов и сервисов, так как оперативная память роутера маленькая. Но для начала нужно выбрать целевой модем/оператора и внешней антенны.

   Наиболее подходящим является MTS. У них можно всю статистику и управление совершить из удобного WEB интерфейса. Попытаемся подключиться к этому модему. Он отображается как CD-ROM. Анализ dmesg показал, что CD-ROM монтируется как SCSI, и его нужно отключать именно как SCSI, никакие usb_modeswitch тут не работают. Первый же проход по папке с man’ами показал, что есть пакет sdparm. Далее приступаем к работе. 

Сборка OpenWRT

   Все шаги выполняются в консоли Linux. Обратите внимание, релиз Backfire выбран из-за того, что это последний релиз с ядром 2.4. Это очень важно, так как ядро 2.6 само по себе очень требовательно как к производительности процессора, так и к системным ресурсам.

• Скачиваем исходник OpenWRT:
• svn co svn://svn.openwrt.org/openwrt/branches/backfire openwrt-backfire
• Переходим в папку с исходником
• cd openwrt-backfire
• Обновляем все пакеты
• ./scripts/feeds update -a
• Добавляем из пакетов sdparm
• ./scripts/feeds install sdparm
• Открываем меню настройки
• make menuconfig
• Выбираем интересующую платформу
• Target System (Broadcom BCM947xx/953xx [2.4])
• Встраиваем интересующие нас пакеты (по умолчанию они не включены даже как модули)
• <*> sdparm........................ Read or modify SCSI or USB disk parameters
• <*> chat................................. Establish conversation with a modem
• <*> comgt............................... Option/Vodafone 3G/GPRS control tool
• <*> kmod-scsi-generic........................ Kernel support for SCSI generic
• <*> kmod-usb-core............................................ Support for USB
• <*> kmod-usb-ohci............................... Support for OHCI controllers
• <*> kmod-usb-serial..................... Support for USB-to-Serial converters
• <*> kmod-usb-storage..................................... USB Storage support
• <*> kmod-usb2................................... Support for USB2 controllers
• Все остальные пункты оставляем без изменения
• Выходим из меню конфигуратора с сохранением
• Собираем инструменты
• make tools/install -j`grep -c processor /proc/cpuinfo`
• make toolchain/install -j`grep -c processor /proc/cpuinfo`
• Открываем меню настройки ядра Linux
• make kernel_menuconfig
• Настраиваем MTD
• [*] Support 2-chip flash interleave
• Выходим из меню конфигуратора с сохранением
• Собираем OpenWRT
• make -j`grep -c processor /proc/cpuinfo`
• После того как прошивка собрана, её нужно прошить в устройство.

Проверка прошивки

   После прошивки и перезагрузки роутера подключите к нему модем и соедините роутер посредством Ethernet с вашим ПК. Настройте на интерфейсе вашего ПК IP адрес, выполнив команду:

ifconfig eth0 inet 192.168.1.2/24

   Потом подключитесь к роутеру по Telnet. Для этого из консоли выполните следующую команду:

telnet -l root 192.168.1.1

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

passwd

   Выполните команду «exit», для выхода из telnet сессии. Выполните вход по ssh:

ssh root@192.168.1.1

   Далее, удостоверимся, что модем был распознан ядром, выполнив команду в консоли:

grep "^P\:.*22de.*6803" /proc/bus/usb/devices

   Результатом выполнения этой команды, будет строка с VID и PID модема. В противном случае, проверьте, что было сделано не по инструкции.

Модернизация аппаратного обеспечения роутера

   Для управления питанием USB порта нужна свободная ножка процессора. У этого роутера масса светодиодных индикаторов на передней панели и один из них можем приспособить под наши нужды. Выбираем пал на индикатор со значком принтера, так как он соответствует светодиоду USB на proc-fs (/proc/diag/led/usb).

   Управление питанием будет осуществлять дополнительная плата с минимально необходимым набором деталей. Вот её уменьшенная схема:

   Оба транзистора работают в качестве ключей. При подаче логической единицы на вход «CTRL», транзистор VT1 откроется и далее также откроется транзистор VT2 и питающее напряжение подастся на USB порт. Не обязательно использовать печатную плату, можно – монтажную.

   Вот так выглядит конечный вариант:

   Зелёными надписями отмечены одноименные порты на схемы. Резистор R4, припаян непосредственно к ножке светодиода.

   Пошаговая инструкция по модификации:

• Обесточьте роутер и разберите его

• Уберите не нужный R48 – этот резистор соединяет светодиод с ножкой процессора

• Удалите предохранитель F1 – этот предохранитель, должен обеспечить защиту в случае короткого замыкания на линиях питания USB.

• Надписями желтого цвета отмечены места подключения платы управления

• Удалите защитное покрытие с проводника, ведущего сигнал от процессора к резистору R48. К этому проводнику, должен быть подпаян порт «CTRL» платы управления

• Приклейте плату управления в наиболее удобное для вас место.

• Припаяйте резистор R4 непосредственно к аноду светодиода, как указанно на фотографии. Также обратите внимание на подключение соединительных проводов

• Закончите монтаж соединительных проводов

• Итоговый результат

• Соберите и включите роутер

Модернизация программного обеспечения роутера

   Подключитесь к роутеру по ssh, и все следующие шаги будут выполняться на нём.

Создание утилит для управления USB

   Перейдите в папку /etc/ppp. 

cd/etc/ppp


• Создайте usb-up.sh. Этот скрипт будет включать питание на USB порте
• $ cat usb-up.sh
• #!/bin/sh
• logger -t "USB PwrCtrl" "Turn-on USB power"
• echo 1 > /proc/diag/led/usb
• Создайте скрипт для перезагрузки USB порта
• $ cat resetusb.sh
• #!/bin/sh
• logger -t "USB PwrCtrl" "Turn-off USB power"
• echo 0 > /proc/diag/led/usb
• # Sleep in 3 sec is an optional, but may be useful for some modem types
• #sleep 3
• logger -t "USB PwrCtrl" "Turn-on USB power"
• echo 1 > /proc/diag/led/usb
• Создайте скрипт для проверки существования процесса pppd
• #!/bin/sh
• if ps | grep -q /usr/sbin/pppd; then
• logger -t "PPP watcher" "PPP alive"
• else
• logger -t "PPP watcher" "No PPP daemon"
• /etc/ppp/resetusb.sh
• fi
• Сделайте скрипты исполняемыми
• chmod a+x /etc/ppp/*.sh
• Добавим корректную обработку подключения модема к USB. Обратите внимание на то, что в OpenWRT, по умолчанию, нет udev, а вместо этого используется hotplug «демон»
• $ cat /etc/hotplug.d/usb/11-modem
• #!/bin/sh

• # Copyright (C) 2013 Sergey Shcherbakov <shchers@gmail.com>

• case "$ACTION" in
• add)
• (grep -q "^P\:.*22de.*6803" /proc/bus/usb/devices) && {
• logger -t "WM-D300" "Detected ZeroCD of WM-D300 modem"
• # Checking ZeroCD status
• while [ "$(sdparm -q --command=ready /dev/scsi/host0/bus0/target0/lun0/generic)" != "Ready" ]; do
• logger -t "WM-D300" "ZeroCD yet not ready"
• # Workaround for bug with multiple calls of scripts
• (/usr/bin/lsusb | grep -q 22de:6801) && {
• logger -t "WM-D300" "Seems that script called twice and device already initialized"
• return 0
• }
• sleep 2
• done

• logger -t "WM-D300" "ZeroCD ready and will be ejected"
• /usr/bin/sdparm --command=eject /dev/scsi/host0/bus0/target0/lun0/generic
• }

• (grep -q "^P\:.*22de.*6801" /proc/bus/usb/devices) && [ ! -c /dev/usb/tts/0 ] && {
• logger -t "WM-D300" "Updating USB Serial driver with D200/D300 vendor and product ID"
• rmmod usbserial && insmod usbserial vendor=0x22de product=0x6801
• }

• (grep -q "^P\:.*22de.*6801" /proc/bus/usb/devices) && [ -c /dev/usb/tts/2 ] && ! (ifconfig 3g-wan 1>/dev/null 2>/dev/null) && {
• logger -t "WM-D300" "All modem interfaces installed, turning on WAN"
• ifdown wan && ifup wan
• }
• ;;
• remove)
• ! (grep -q "^P\:.*22de.*6801" /proc/bus/usb/devices) && {
• logger -t "WM-D300" "Modem disconnected, turning off WAN interface"
• ifdown wan
• }
• ;;
• esac

Внесение изменений в существующие скрипты

• Запретите WAN интерфейс, заданный по умолчанию, выполнив команду
• sed -i 's/interface\ wan$/interface\ wan_dflt/' /etc/config/network
• Добавьте новый описатель WAN интерфейса с настройками для 3G
• $ cat /etc/config/network
• …
• config interface wan
• option ifname ppp0
• option device /dev/usb/tts/0
• option service evdo
• option proto 3g
• option username 'mobile'
• option password 'internet'
• option pppd_options 'noipdefault maxfail 3'
• option connect '/etc/ppp/usb-up.sh'
• option disconnect '/etc/ppp/resetusb.sh'
• option keepalive 20
• Для того чтобы добавить автоматическое включение USB порта при инициализации роутера, нужно модифицировать стандартный скрипт /etc/init.d/usb, добавив в конце функции start() вызов скрипта /etc/ppp/usb-up.sh
• $ cat /etc/init.d/usb
• …
• start() {
• ...
• # Turn-on power on USB
• /etc/ppp/usb-up.sh
• }
• …
• Дополнительно можно модифицировать, но необязательно, Chat скрипт (/etc/chatscripts/evdo.chat).
• ABORT BUSY
• ABORT 'NO CARRIER'
• ABORT ERROR
• ABORT 'NO DIAL TONE'
• ABORT 'NO DIALTONE'
• ABORT 'NO ANSWER'
• REPORT CONNECT
• TIMEOUT 10
• '' AT
• OK ATDT#777
• CONNECT ''
• Добавляем в Cron задачу, которая будет проверять наличие процесса pppd каждые пять минут. Для этого следует вызвать команду "crontab -e” и добавить следующую строку:
• */5 * * * * /etc/ppp/check.sh
• Разрешаем выполнение Cron и запускаем его
• /etc/init.d/cron enable && /etc/init.d/cron start

   Далее перезагрузить роутер и можете пользоваться с удовольствием. Без сбоя работал 40 дней, что гораздо больше, чем у обычных модемов. В зависимости от местоположения скорость достигала 350 Кбит/с. Полный вариант статьи находится тут.




Поделитесь полезными схемами



СГЛАЖИВАЮЩИЕ ФИЛЬТРЫ

     Выпрямленный ток и напряжение на нагрузочном сопротивлении являются пульсирующими. Для сглаживания пульсаций параллельно нагрузочному сопротивлению можно включить конденсатор. Для более совершенного сглаживания пульсации вместо одного конденсатора между выпрямителем и нагрузочным сопротивлением R включают сглаживающий фильтр из элементов L и С.


МИГАЛКА НА МОТОЦИКЛ

   Мотоцикл с полицейской мигалкой - схема двухцветного светодиодного сигнала для имитации полиции.


САМОДЕЛЬНЫЙ ИМПУЛЬСНЫЙ ПАЯЛЬНИК

    После нажатия на кнопку, паяльник разогревается в течении 5 секунд, то есть по принципу мы замкнули выводы вторичной обмотки трансформатора, в следствии которого проволока (жало) нагревается.


ПОВЫШАЮЩИЙ ПРЕОБРАЗОВАТЕЛЬ

   Однотактный преобразователь на таймере NE555 - простая проверенная схема.


ЛЮМИНЕСЦЕНТНАЯ ЛАМПА СВОИМИ РУКАМИ

   Как собрать настольный светильник на основе люминесцентной трубки и электронного балласта от нерабочей энергосберегалки.  





КАК СДЕЛАТЬ МАТРИЦУ ИЗ СВЕТОДИОДОВ

   Несложная LED матрица 8х8 элементов, которая может показывать бегущую строку управляемую Ардуино.


ПРОСТЕЙШИЙ ЭЛЕКТРОДВИГАТЕЛЬ

   Пальчиковая батарейка, круглый магнит и проволока - вот и всё, что нужно для электромоторчика.


ПРОСТОЕ РАДИО НА ОДНОМ ТРАНЗИСТОРЕ

   Самое простое FM радиоприёмное устройство на полевом транзисторе MPF102 - принципиальная схема.


ПРИБОР ДЛЯ КОНТРОЛЯ РАДИАЦИИ НА МИКРОКОНТРОЛЛЕРЕ

   Принципиальная схема микроконтроллерного дозиметра с LCD, на базе счётчика Гейгера СБМ-20 и PIC16F684.


СХЕМА ДОЗИМЕТРА НА СБМ-20

   Измеритель уровня радиации на микроконтроллере PIC18F2550 - схема и конструкция.


АНТИМОСКИТНАЯ ЛАМПА ПРОТИВ КОМАРОВ

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


СХЕМА АУДИО КОМПРЕССОРА

   Небольшая самодельная приставка для выравнивания минимальных и максимальных уровней сигнала звука.


СХЕМА ДЛЯ МИГАНИЯ СВЕТОДИОДОВ

   Самая простая мигалка для 2-х светодиодов - по научному симметричный мультивибратор.


ЭЛЕКТРОННЫЙ ПРЕДОХРАНИТЕЛЬ НА ПОЛЕВОМ ТРАНЗИСТОРЕ

     Приставка электронный предохранитель на полевом транзисторе, для защиты цепей постоянного тока до 5 А.


УСТРОЙСТВО ЗАЩИТЫ ДЛЯ ЛЮБОГО БЛОКА ПИТАНИЯ

   Защита от короткого замыкания для практически любого источника питания - принципиальная схема отдельного подключаемого модуля.

Радиолюбительский портал по самодельным устройствам и электронным самоделкам, собранными своими руками