Всем Привет.

Эта страничка для тех кто столкнулся с проблемой установки вЫнь модема Motorola SM56 на Linux.

03.02.2003

Появился новый драйвер для модема Motorola SM56!!!!!! разработчики:  Rajesh Kizhuveetil, Marvin Stodolsky, Jan Michel Ibanez.  Сайт Rajesh Kizhuveetil - http://www.sm56.tk/.

Драйвер для gcc 2.x C Compiler

       загрузите sm56.tar.gz и введите следующие команды:

  1. залогинтесь как root 
  2. gunzip sm56.tar.gz
  3. tar -xvf sm56.tar
  4. cd sm56
  5. make install

Драйвер для gcc 3.x C Compiler.

        Загрузите  sm56-gcc3.tar.gz и следуйте командам перечисленным выше(используйте cd sm56-gcc3 вместо cd sm56).

(дравер для gcc 3.x есче не испытан, если какие баги пишите - Rajesh Kizhuveetil (на английском канешна :).)

Требования для SM56.tar File

       Во всех случаях вам нужно иметь исходники ядра (обычно они здесь - /usr/src/linux) для запуска модуля SM56.

 

Many thanks to Rajesh Kizhuveetil, Marvin Stodolsky, Jan Michel Ibanez for Making SM56 Installable Module.


************************************************************************
У не RedHat - подобных нужно править строчку в makefile, которая содержит такой фрагмент текста:

gcc -D__KERNEL__ -DMODULE -Wall -O -I/usr/src/linux-2.4/include -fomit-frame-pointer -o kmhack.o -c kludge.c

Вместо /usr/src/linux-2.4 нужно писать реальный путь к исходникам ядра. Для Slakware 8.1 например это будет: /usr/src/linux-2.4.18 или: /usr/src/linux - это ссылка на предыдущую реальную директорию.
Огромное спасибо Andrey Shaikin за информацию


************************************************************************

 

 

Если у вас ничего не получается, то действуйте так как написано ниже:



************!!!!! Способ для дров от Моторола !!!!*************

Дело в том, что драйвера от производителя работают на ядрах 2.4.2-2.4.5.   Когда у меня на машине был Red Hat 7.1, модем работал как часики, все нормально. Но когда установил Red Hat 7.2 (Enigma) с ядром 2.4.7-10, то модем перестал функциклировать :( . Качнул с www.kernel.org ядро 2.4.5 скомпилил, поставил и модем заработал . Но это ядро не поддерживает файловую систему ext3. патч к этому ядру я не смог поставить (из-за кривости моих рук :) .И вот нарыл статейку http://www.angelfire.com/linux/sm56/ как заставить этот модем работать на ядре 2.4.18 и все теперь работает :)

Кто не врубается на ингише, вот мой гнилой перевод с англицкого :)

Введение:

Драйвер софт модема Motorola SM56 был тестирован в работе для Mandrake 8.0 (i386). Тем не менее, Motorola прекратила поддержку новых последующих ядер в Linux. Когда драйвер был проинсталлирован на Mandrake 8.2, драйвер перестал отвечать и работать.

Проблема:

Следующие сообщения об ошибке появляются, когда вы загружаете SM56 драйвер:

Войдите в систему как root и введите следующую команду в консоли:

[root@localhost darwin]# insmod sm56
Using /lib/modules/2.4.18-6mdk/kernel/drivers/char/sm56
Warning: loading /lib/modules/2.4.48-6mdk/kernel/drivers/char/sm56 will taint the kernel: no license
Segmentation fault
[root@localhost darwin]#

Что бы получить больше информации о ошибке, введите следующую команду в консоли:

[root@localhost darwin]# dmesg

Мы получаем следующую детализированную инфо ошибки:

kernel BUG at slab.c:1099!
invalid operand: 0000
CPU: 0
EIP: 0010:[<c012b4a6>] Tainted: P
EFLAGS: 00010282
eax: 0000001b ebx: d3fdc2f0 ecx: 00000001 edx: 00001799
esi: d3fdc2f0 edi: 00000007 ebp: d3fdc2f0 esp: cf8f5e1c
ds: 0018 es: 0018 ss: 0018
Process insmod (pid: 1401, stackpage=cf8f5000)
Stack: c02314e3 0000044b 00000001 c012da15 c02d6f90 00001030 d3fd9800 c0146590
00000282 d3fdc2f0 00000202 d3fdc2f8 d3fdc2f0 c012b84c d3fdc2f0 00000007
00000001 c012da15 c02d6f90 00000000 00000064 00000000 00000000 cf8f5e98
Call Trace: [<c012da15>] [<c0146590>] [<c012b84c>] [<c012da15>] [<d6981060>] [<c021074a>] [<d69c7d34>] [<d69c7a63>] [<c012da15>] [<c01174f5>] [<d6981060>] [<c0106f4b>]
Code: 0f 0b 5a 59 f7 c7 00 10 00 00 0f 85 d0 01 00 00 a1 c8 d3 33

Нас интересует первая строка этой информации:

kernel BUG at slab.c:1099!

Попытаемся исправить ошибку, модифицируя файл slab.c в исходниках ядра в строке 1099.

Решение:

Для этого нужны исходники ядра 2.4.18. Если у вас их нет, ищите на ваших инсталляционных Mandrake 8.2 CD.

Введите следующую команду, чтобы увидеть расположение файла slab.c:

[root@localhost darwin]# locate slab.c
/usr/src/linux-2.4.18-6mdk/drivers/media/radio/radio-aimslab.c
/usr/src/linux-2.4.18-6mdk/mm/slab.c
[root@localhost darwin]#

Нас интересует файл /usr/src/linux-2.4.18-6mdk/mm/slab.c. Откройте файл привычным вам текстовым редактором и двигайтесь к строке 1099. Вы видите следующий С код:

static int kmem_cache_grow (kmem_cache_t * cachep, int flags)
{
slab_t *slabp;
struct page *page;
void *objp;
size_t offset;
unsigned int i, local_flags;
unsigned long ctor_flags;
unsigned long save_flags;

/* Be lazy and only check for valid flags here,
* keeping it out of the critical path in kmem_cache_alloc().
*/

if (flags & ~(SLAB_DMA|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();


if (flags & SLAB_NO_GROW)
return 0;

Нас интересует строка, которая выделена красным цветом, она расположена в строках 1098 и 1099. Если мы удалим эти строки, то мы сможем избежать сообщения об ошибке которое появляется при загрузке драйвера. Закомментируйте эти строки:

/*

if (flags & ~(SLAB_DMA|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();

*/

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

 

Вот и все.

если какие траблы, Ашипки и ачепятки, пишите Vladimir Kolomiets, чем могу помогу :)

Удачи.

P.S.

Этот способ я пробывал тока на ядре 2.4.18. Большая просьба сообщить мне результат работы этого способа на других ядрах. 

Мотороловские дрова (для ядер 2.4.2-2.4.5) на модем можно качнуть здесь. (637 КБ).

Linux шпора

 

29.01.2003.

Способ был реализован успешно на ядре 2.4.9 с дистрибутивом ASPLinux (спасибо приславшему за эту инфу :)