OpenSolaris, OpenIndiana, Nexenta Forum
OpenSolaris, OpenIndiana, Nexenta => OpenSolaris => Тема начата: solman от Январь 03, 2011, 12:24:56 pm
-
Стоит OpenSolaris 2008 и есть 3G-usb modem. С виндой проблем нет - спокойно заходит в инет. А как в Солярис настроить подключиение к интернет и можно ли вообще ?
-
А какой фирмы 3g модем если МТС то можно прочитать на главной странице как подключить
-
нет. Beeline
-
Как называется модем (фирма-изготовитель и марка)?
-
3G-usb-modem HUAWEI
-
Норм. Значит скорее всего все можно подключить. Главное - переключить модем из режима флешки в режим модема. Тут нужна специальная программа.
-
И как же быть-то ?
Можешь прогу подсказать?
-
Наткнулся на одну статью. Глянь плиз. Подойдет ли она в моем случае?
http://cd-freeos.blogspot.com/2008/11/huawei-e219-e220-e226-3g-beeline-mts.html
-
Да, похоже. Можно попробовать. Только там самый важный момент пропущен - как обратить модем из флешки в модем. Некоторые модемы обращаются после того, как флешку извлекают, а для некоторых надо писать программу на libusb, чтобы отправить им команду обращения в модем. Если не получится настроить по статье - пиши, поразбираемся.
-
Вообщем такая тема...
Следовал я точно по данной статье. Но не получилось. Дело в том, что у меня строчка инициализации следующая:
AT+CGDCONT=1,"ip","internet.beeline.ru".
И еще момент. Там написано:
"Проверяем работает ли устройство:
$ pfexec tip /dev/term/0"
но когда я делаю, во первых у меня /dev/term/a. И когда я делаю pfexec tip /dev/term/а , у меня токо внизу пишет "connect" и висит.... Т.е. в моем случае
solman@nix# pfexec tip /dev/term/a
connect
. Также, у меня номер дозвона *99***1#. Соотвествующим образом я написал в файлах. И в последний момент когда набираю последнюю команду
pfexec pppd call beeline debug - - - появляется AT&F и висит. Т.е.
solman@nix# pfexec pppd call beeline debu
AT&F
Через минут 5-10 останавливается. И ниче не получается. Т.е. ип-адрес не получает.
-
Если /dev/term/0 нету, значит модем как модем не определился и настраивать pppd еще рано. Для начала надо определить id производителя и id продукта на шине USB. Делается это командой echo "::prtusb"|pfexec mdb -k . Скинь, что выведет эта команда и еще команда определения соответствия устройств и драйверов prtconf -D.
-
Приветствую!
Ниже то, что ты просил
echo "::prtusb" | pfexec mdb -k
INDEX DRIVER INST NODE VID.PID PRODUCT
1 ehci 0 pci1043,8179 0000.0000 No Product String
2 uhci 0 pci1043,8179 0000.0000 No Product String
3 uhci 1 pci1043,8179 0000.0000 No Product String
4 uhci 2 pci1043,8179 0000.0000 No Product String
5 uhci 3 pci1043,8179 0000.0000 No Product String
6 scsa2usb 0 storage 125f.d18a A-DATA USB Flash Drive
7 usb_mid 0 device 046d.c311 USB Multimedia Keyboard
8 hid 2 mouse 045e.0040 Microsoft 3-Button Mouse with IntelliEye(TM)
9 usb_mid 2 device 12d1.1446 HUAWEI Mobile
System Configuration: Sun Microsystems i86pc
Memory size: 1024 Megabytes
System Peripherals (Software Nodes):
i86pc (driver name: rootnex)
scsi_vhci, instance #0 (driver name: scsi_vhci)
isa, instance #0 (driver name: isa)
motherboard
fdc, instance #0 (driver name: fdc)
fd, instance #0 (driver name: fd)
lp, instance #0 (driver name: ecpp)
asy, instance #0 (driver name: asy)
motherboard
pit_beep, instance #0 (driver name: pit_beep)
pci, instance #0 (driver name: npe)
pci1043,8178, instance #0 (driver name: agptarget)
pci8086,2771, instance #0 (driver name: pcie_pci)
display, instance #0 (driver name: nvidia)
pci1043,817f, instance #0 (driver name: audiohd)
pci8086,27d0, instance #1 (driver name: pcie_pci)
pci8086,27d6, instance #2 (driver name: pcie_pci)
pci1043,81aa, instance #0 (driver name: rge)
pci1043,8179, instance #0 (driver name: uhci)
device, instance #0 (driver name: usb_mid)
keyboard, instance #0 (driver name: hid)
input, instance #1 (driver name: hid)
mouse, instance #2 (driver name: hid)
pci1043,8179, instance #1 (driver name: uhci)
pci1043,8179, instance #2 (driver name: uhci)
pci1043,8179, instance #3 (driver name: uhci)
pci1043,8179, instance #0 (driver name: ehci)
storage, instance #0 (driver name: scsa2usb)
disk, instance #1 (driver name: sd)
device, instance #2 (driver name: usb_mid)
storage, instance #3 (driver name: scsa2usb)
disk, instance #4 (driver name: sd)
storage, instance #4 (driver name: scsa2usb)
disk, instance #5 (driver name: sd)
pci8086,244e, instance #0 (driver name: pci_pci)
pci1043,8179
pci-ide, instance #0 (driver name: pci-ide)
ide, instance #0 (driver name: ata)
sd, instance #0 (driver name: sd)
ide (driver name: ata)
pci-ide, instance #1 (driver name: pci-ide)
ide, instance #2 (driver name: ata)
cmdk, instance #0 (driver name: cmdk)
cmdk, instance #1 (driver name: cmdk)
ide (driver name: ata)
pci1043,8179
pseudo, instance #0 (driver name: pseudo)
agpgart, instance #0 (driver name: agpgart)
options, instance #0 (driver name: options)
xsvc, instance #0 (driver name: xsvc)
used-resources
cpus, instance #0 (driver name: cpunex)
cpu (driver name: cpudrv)
cpu (driver name: cpudrv)
-
Модем определился как флешка и на шине USB имеет VID.PID=12d1.1446.
Вот стек драйверов, которые к нему подцепились:
device, instance #2 (driver name: usb_mid)
storage, instance #3 (driver name: scsa2usb)
disk, instance #4 (driver name: sd)
storage, instance #4 (driver name: scsa2usb)
disk, instance #5 (driver name: sd)
Надо сделать так, чтобы флешка превратилась в модем и число PID поменялось на другое, соответственно другие драйвера подцепятся к устройству. Для этого надо запустить программу, приведенную ниже.
/*
* Copyright (C) 2009 ChenL
*
* switch_modem.c
* Switch HUAWEI series modem from storage to modem device.
* To compile:
* gcc switch_modem.c -lusb -o switch_huawei
*/
#include <stdio.h>
#include "usb.h"
#define HUAWEI_VENDOR 0x12d1
#define HUAWEI_PRODUCT 0x1446 /* Change this to your own device ID! */
static usb_dev_handle *udev;
/*
* Not sure what's purpose of this command. But we need it. The device
* seems to perform a reset upon receiving it.
*/
int send_bulk_command()
{
unsigned char command[] = {0x55, 0x53, 0x42, 0x43, 0x78, 0x56, 0x34, 0x12, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
/* 0x55, 0x53, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
*/
};
if (usb_claim_interface(udev, 0) != 0) {
printf("Fail to claim interface: %d\n", usb_strerror());
return (-1);
}
if ((usb_clear_halt(udev, 0x81) != 0) ||
(usb_clear_halt(udev, 0x01) != 0)) {
printf("Fail to clear halt: %s\n", usb_strerror());
return (-1);
}
if (usb_bulk_write(udev, 0x01, (char *)command, 31, 0) != 0) {
printf("Fail to send SCSI command: %s\n", usb_strerror());
}
}
int main(void)
{
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
printf("bus/device idVendor/idProduct\n");
for (bus = usb_busses; bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
int i, ret;
char string[256];
printf("%s/%s %04X/%04X\n", bus->dirname,
dev->filename, dev->descriptor.idVendor,
dev->descriptor.idProduct);
udev = usb_open(dev);
if (udev) {
if (dev->descriptor.iManufacturer) {
ret = usb_get_string_simple(udev,
dev->descriptor.iManufacturer,
string, sizeof(string));
if (ret > 0)
printf("- Manufacturer : %s\n",
string);
else
printf("- Unable to fetch"
" manufacturer string %d\n",
ret);
}
if (dev->descriptor.iProduct) {
ret = usb_get_string_simple(udev,
dev->descriptor.iProduct,
string, sizeof(string));
if (ret > 0)
printf("- Product : %s\n",
string);
else
printf("- Unable to fetch"
" product string\n");
}
if (dev->descriptor.iSerialNumber) {
ret = usb_get_string_simple(udev,
dev->descriptor.iSerialNumber,
string, sizeof(string));
if (ret > 0)
printf("- Serial Number: %s\n",
string);
else
printf("- Unable to fetch serial"
" number string\n");
}
if ((dev->descriptor.idVendor == HUAWEI_VENDOR)
&& (dev->descriptor.idProduct == HUAWEI_PRODUCT)) {
int rval;
rval = usb_control_msg(udev,
USB_TYPE_STANDARD | USB_RECIP_DEVICE,
USB_REQ_SET_FEATURE,
1, /* wValue */
0, /* wIndex */
0, /* wLength */
0, /* size */
0 /* timeout */);
if (rval != 0) {
printf("Can't switch the modem's"
" configuration \n");
} else {
printf("Switch Huawei modem's"
" config successfully\n");
}
send_bulk_command();
usb_close(udev);
goto done;
}
printf("No matching devices found!\n");
usb_close(udev);
}
}
}
done:
return 0;
}
-
keremet, a как запустить-то её? Это как bash скрипт ?
-
Это код на С. Его сначала надо скомпилировать. Надо сохранить текст программы в файл switch_modem.c, а затем в терминале выполнить команду gcc switch_modem.c -lusb -o switch_huawei . Появится исполняемый файл switch_huawei. Его надо запустить в терминале командой ./switch_huawei
-
Блин, мне еще надо бы gcc поставить. Разберусь тогда с этим, потом откомпилирую... и дальше посмотрим.
-
pfexec pkg install SUNWgcc
-
keremet, скинь пожалуйста ссылку SUNWgcc, а то у меня нет её.
-
SUNWgcc - это название пакета в репозитории. Чтобы его установить, надо установить локальный репозиторий или подключиться к pkg.opensolaris.org.
-
Приветствую...
keremet, вот сделал как ты велел, но опять еррор. Глянь:
/usr/local/bin/gcc switch_modem.c -lusb -o switch_huawei
In file included from switch_modem.c:10:
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:36:27: iso/stdio_iso.h: No such file or directory
In file included from switch_modem.c:10:
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:194: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:229: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:230: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:236: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:244: error: syntax error before "size_t"
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:249: error: syntax error before "size_t"
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:258: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:260: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:284: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:293: error: syntax error before '*' token
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:294: error: syntax error before "FILE"
/usr/local/lib/gcc/i386-pc-solaris2.9/3.4.6/include/stdio.h:295: error: syntax error before '*' token
switch_modem.c:11:17: usb.h: No such file or directory
switch_modem.c:16: error: syntax error before '*' token
switch_modem.c:16: warning: data definition has no type or storage class
switch_modem.c: In function `main':
switch_modem.c:60: error: `usb_busses' undeclared (first use in this function)
switch_modem.c:60: error: (Each undeclared identifier is reported only once
switch_modem.c:60: error: for each function it appears in.)
switch_modem.c:60: error: dereferencing pointer to incomplete type
switch_modem.c:61: error: dereferencing pointer to incomplete type
switch_modem.c:61: error: dereferencing pointer to incomplete type
switch_modem.c:65: error: dereferencing pointer to incomplete type
switch_modem.c:66: error: dereferencing pointer to incomplete type
switch_modem.c:66: error: dereferencing pointer to incomplete type
switch_modem.c:67: error: dereferencing pointer to incomplete type
switch_modem.c:69: warning: assignment makes pointer from integer without a cast
switch_modem.c:71: error: dereferencing pointer to incomplete type
switch_modem.c:73: error: dereferencing pointer to incomplete type
switch_modem.c:85: error: dereferencing pointer to incomplete type
switch_modem.c:87: error: dereferencing pointer to incomplete type
switch_modem.c:97: error: dereferencing pointer to incomplete type
switch_modem.c:99: error: dereferencing pointer to incomplete type
switch_modem.c:109: error: dereferencing pointer to incomplete type
switch_modem.c:110: error: dereferencing pointer to incomplete type
switch_modem.c:114: error: `USB_TYPE_STANDARD' undeclared (first use in this function)
switch_modem.c:114: error: `USB_RECIP_DEVICE' undeclared (first use in this function)
switch_modem.c:115: error: `USB_REQ_SET_FEATURE' undeclared (first use in this function)
-
Мдаа... Похоже gcc какой-то паленый. Лан, я вечером бинарник выложу.
-
http://zalil.ru/30411169
-
Андрей у тебя столько энергии что всей вселенной не хватит я со всеми добрыми намерениями спасибо что ты есть на свете
-
Поменял я свою ОС на Solaris. К счастью там он с уже установленным gcc. Сделал все как ты просил. Но какие-то ерроры полетели. Завтра выложу их сюда...
-
Приветствую вообщем запустил исполняемый скрипт который должен получиться после написанного файла и вот появились ерроры
ilya@miass:/export~/SolStudioProjects/USB-modem$ ./switch_huawei
bus/device idVendor/idProduct
/dev/usb/12d1.1446/0 12D1/1446
- Manufacturer : HUAWEI Technology
- Product : HUAWEI Mobile
Switch Huawei modem's config successfully
Fail to send SCSI command: Device busy