Показать сообщение отдельно
Старый 03.09.2013, 22:45   #642
Dosian
Новичок
Доп. информация
По умолчанию Мануал для 3G модемов!

Вот краткий мануал для подключения модемов не прописанных в ШГУ!

Итак, за определение модемов в ШГУ отвечают три файла:
  • /data/usb_modem/etc/usb_device_config
  • /data/usb_modem/etc/modem_device_config
  • /data/usb_modem/configs/имя модема

/data/usb_modem/etc/usb_device_config - содержит информацию о VID и PID устройств, которых следует считать модемами (точнее составными usb устройствами) и адреса до файла с командой переключения в модем режим (configpath=/data/usb_modem/configs/...)
Например :
[ZTE-MF192]
name=ZTE-MF192
idVendor=19d2
idProduct=1514
configpath=/data/usb_modem/configs/zte_mf192

/data/usb_modem/etc/modem_device_config - содержит информацию о VID и PID модема, портах для AT и PPP команд и библиотеки управления запросами.
Например :
[ZTE-MF192]
name=ZTE-MF192
model=BD_MF192
idVendor=19d2
idProduct=1515
deviceport=/dev/ttyACM0
dataport=/dev/ttyACM1
libpath=/system/lib/libdatacard-ril.so

Для добавления нового устройства необходимо :
Смотрим на модем... Если помимо слота для сим-карты есть слот для микро сд, то скорее всего нужен будет файл со строкой переключения модема в режим модема.
Если есть слот МИКРО - СД, то
1: В терминале ввести команды
su
потом
logcat
2. Подключаем модем и внимательно смотрим лог на наличие новых записей типа
vid: 19d2 pid : 2000 - это и есть наш модем... точнее составное устройство... Запоминаем! Для ZTE строка скорее всего будет выглядеть так vid: 19d2 pid : 2000
3. Открываем файл /data/usb_modem/etc/usb_device_config и ищём совпадение наших значений в файле...
idVendor=это vid
idProduct= это pid
Если нашли совпадение, то смотрим какой файл прописан в параметре configpath= .. .это файл переключения в режим модема.. находим его и открываем.. видим примерно следующее:
# ZTE devices

DefaultVendor=0x19d2
DefaultProduct=0x2000

TargetVendor= 0x19d2
TargetProductList="0001,0002,0015,0016,0017,0031,0 037,0052,0055,0061,0063,0064,0066,0091,0108,0117,0 128,0157,1402,2002,2003"

MessageContent="5553424312345678000000000000061e00 0000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b0 00000020000000000000000000000"
MessageContent3="55534243123456702000000080000c850 10101180101010101000000000000"

NeedResponse=1


4. Идём домой =) и подключаем модем к ПК. Устанавливаем все драйвера ... открываем "Диспетчер устройств" находим модем и смотрим в свойствах ИД оборудования, строка типа:
USB\VID_0x19d2&PID_0031&MI_00
Нам нужен PID.. В моём примере он равен 0031 - это PID модема! Запоминаем!
Теперь посмотрим, на алгоритм в Андройде.
При подключение модема определяется его VID и PID и, если они присутствуют в файле usb_device_config системе даётся сигнал, что обнаружен модем и его необходимо переключить файлом в параметре configpath= в состояние "только модем"..
В файле например configpath=/data/usb_modem/configs/zte_mf190 содержится следующее :
DefaultVendor=0x19d2
DefaultProduct=0x2000 - строки изначального устройства
TargetVendor= 0x19d2
TargetProductList="0001,0002,0015,0016,0017,0031,0 037,0052,0055,0061,0063,0064,0066,0091,0108,0117,0 128,0157,1402,2002,2003" - что должно получиться после команды MessageContent (список почти всех устройств ZTE.. здесь мы находим свой PID или дописываем 0031)

MessageContent="5553424312345678000000000000061e00 0000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b0 00000020000000000000000000000"
MessageContent3="55534243123456702000000080000c850 10101180101010101000000000000" - это команды ..

5. Осталось отредактировать /data/usb_modem/etc/modem_device_config. открываем его и копируя создаём новый блок.. Редактировать только в Notepad++!!!
Например добавим модем MF631
[ZTE-MF631] - название любое
name=MF631- тоже любое
model=MF631 тоже любое
idVendor=0x19d2 - наш VID
idProduct=0031 - наш PID из Диспетчера Устройств
deviceport=/dev/ttyUSB1
dataport=/dev/ttyUSB2
Чтобы узнать какой ttyUSB порт нам нужен для AT команд и PPP необходимо в терминале набрать команду
ls /dev/ttyUSB*
Увидим список всех портов ttyUSB. Далее в каждый порт отправляем команду
echo AT > /dev/ttyUSB0 (ttyUSB0 меняем по списку на ttyUSB1 и так далее.. )
Если увидим ответ ОК отправляем команду echo "ATDT*99#" > /dev/ttyUSB0 (где ttyUSB0 номер порта). Если порт ответил "ОК" и "CONNECT", значит это наш dataport. Вписываем dataport=/dev/ttyUSB0 (где ttyUSB0 ответивший порт) Deviceport - это порт который ответил на AT - ОК, но не ответил на echo "ATDT*99#".
Для ZTE обычно :
deviceport=/dev/ttyUSB1
dataport=/dev/ttyUSB2
ibpath=/system/lib/libdatacard-ril.so - не меняем!

В результате получается, что-то вроде
[ZTE-MF631]
name=ZTE-MF631
model=MF631
idVendor=0x19d2
idProduct=0031
deviceport=/dev/ttyUSB1
dataport=/dev/ttyUSB2
libpath=/system/lib/libdatacard-ril.so
Сохраняем!
Подключаем модем и смотрим на лог командой logcat -b radio... Всё должно заработать!
Dosian вне форума  
11 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.11652 секунды с 10 запросами