Huawei e1550 на centos или Elastix 2.3.0

В одну сторону (gsm -> sip) слышно нормально, в обратную (sip -> gsm) с искажениями и шумами до полной неразборчивости.
chan_datacard из рук вон плохо работал на CentOS (сборки Elastix, Asterisk)

Huawei E1550

Попробуем решить пробелму.

Система Elastix 2.3.0 с последними обновлениями.
Доставим необходимые пакеты

    yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config

Скачаем последнее ядро

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2

Распакуем его

    tar -xf linux-2.6.39.tar.bz2

Создадим ссылку на на стандартное расположение исходников ядра

    ln -sf /usr/src/linux-2.6.39 /usr/src/linux

Копируем конфиг от активного ядра

    cd linux
    cp /boot/config-`uname -r` .config

Запускаем конфигуратор ядра

    make menuconfig

И вносим небольшую корректировочку без которой новое ядро не взлетит:
- в разделе "General setup --->" активируем опцию "enable deprecated sysfs features which may confuse old userspace tools"
Выходим из кофигуратора
Создаем папки для сохранения результирующего rpm файла:

    mkdir -p /usr/src/redhat/SRPMS
    mkdir -p /usr/src/redhat/RPMS/{i386,x86_64}

Стандартный make rpm не собирает initrd автоматически и не добавляет ядро в grub.conf, поэтому надо наложить патчик.
Редактируем файл

    nano scripts/package/mkspec

добавляя в его конец следующее:

    echo "%post"
    echo "/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install "$KERNELRELEASE" || exit \$?"
    echo ""

    echo "%preun"
    echo "/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove "$KERNELRELEASE" || exit \$?"
    echo ""

Сохраняемся {CLTR} X Подтверждаем Y и наконец {ENTER}

Собираем ядро (заодно контролируем время сборки):

    time make rpm

У меня на Intel Atom D2700 @ 2.13 GHz собрака длилась

real    48m26.328s
user    135m54.842s
sys     8m25.492s

По окончании устанавливаем новое свежее красивое ядро.

    rpm -ihv /usr/src/redhat/RPMS/i386/kernel-2.6.39-1.i386.rpm

Проверяем правильно ли оно прописалась в настройк grub'а

    [root@voip ~]# cat /boot/grub/menu.lst
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    #          initrd /initrd-version.img
    #boot=/dev/hdc
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.39)
            root (hd0,0)
            kernel /vmlinuz-2.6.39 ro root=/dev/VolGroup00/LogVol00
            initrd /initrd-2.6.39.img
    title Elastix (2.6.18-194.3.1.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-194.3.1.el5 ro root=/dev/VolGroup00/LogVol00
            initrd /initrd-2.6.18-194.3.1.el5.img
           
Пригнулись, вздохнули по глубже и {Reboot}

    reboot

После перезагрузки проверяем версию текущего ядра

    [root@voip ~]# uname -a
    Linux voip 2.6.39 #1 SMP Wed Nov 24 21:13:57 EET 2010 i686 i686 i386 GNU/Linux

После этой процедуры на первый взгляд все живое.   

До

Details of package versions
Name  Package Name      Version      Release
Kernel
        Linux(i386)      2.6.18      238.12.1.el5   

После

Name      Package Name      Version      Release
Kernel
        Linux(i386)      2.6.39      undefined