Как подружить вебкамеру Genius e Messenger 112 и OpenSUSE

Genius e-Messenger 112, отвратительная веб-камера

Вебкамера Genius e Messenger 112 одна из самых дешевых, и одна из самых хреновых. Родные драйвера есть только под винду, а под linux она без напильника и танцев с бубном работать не желает.

Итак, если вы счастливый обладатель OpenSUSE версии до 11.1 (версия ядра до 2.6.27), то камеру завести относительно несложно. Надо установить пакет gspcav, наложить на него патч, собрать и установить модуль gspca — камера заведется без проблем.

Но если вы несчастный обладатель самого глючного дистрибутива OpenSUSE, ваши беды не закончились на его установке. Дело в том, что начиная с версии ядра 2.6.27 программисты решили вымахнуться и перенесли поддержку драйверов gspca из отдельного пакета в состав ядра. И разумеется, прозевали поддержку этой злосчастной камеры. Правда, пообещали, что начиная с версии ядра 2.6.28 эта камера будет работать.

Но на сегодняшний день последней версией ядра для OpenSUSE 11.1 является 2.6.27, поэтому или придется драйвер собрать руками, или скачать / ждать новую версию ядра. Ждать мне было лень, поэтому я скачал исходники ядра, и поправил файл gspca_pac207.c, дописав одну выделенную строчку:


528 static const __devinitdata struct usb_device_id device_table[] = {
529 {USB_DEVICE(0x041e, 0x4028)},
530 {USB_DEVICE(0x093a, 0x2460)},
531 {USB_DEVICE(0x093a, 0x2463)},
532 {USB_DEVICE(0x093a, 0x2464)},
533 {USB_DEVICE(0x093a, 0x2468)},
534 {USB_DEVICE(0x093a, 0x2470)},
535 {USB_DEVICE(0x093a, 0x2471)},
536 {USB_DEVICE(0x093a, 0x2476)},
537 {USB_DEVICE(0x093a, 0x2472)},
538 {USB_DEVICE(0x2001, 0xf115)},
539 {}
540 };

Модуль собрался, и заработал, но с глюками. Cheese, Skype работают нормально, а вот camorama не завелась. Яркость изображения регулируется с помощью v4lctl, а вот как регулировать контрастность или цветовой баланс — хз. В старой версии ядра таких проблем не было.

OpenSUSE, Skype и отправка SMS

Skype Logo

На сегодняшний день последней версией скайпа для OpenSUSE является версия 2.0.0.72. Возможность отправлять СМСки в скайпе появилась только с версии 2.5, но как оказалось, отправить SMS можно и из OpenSUSE, и из Ubuntu с использованием Skype API on Linux.

Для того, чтобы заработала отправка SMS, надо установить сам Skype, а также Python wrapper Skype4Py, и утилиту Skysentials.

После запуска видим Skysentials видим вполне интуитивно понятную тулзу для отправки SMS:

Отправка СМС из скапа под линуксом

Отправка СМС не бесплатная, но сопоставима по стоимости с отправкой с мобильника. А с учетом того, что сейчас скайп активно рассылает ваучеры на пополнение баланса, можно и попробовать.

Я испытал это чудо буржуйской техники, и выяснил две вещи.

  • Отправка СМС отлично работает под OpenSUSE, только вот Skype4Py пришлось чуть-чуть напильником доработать (в первой строчке заменить python2.5 на python2.6)
  • СМС в Черногорию отправить нельзя.
  • Балансировка нагрузки с помощью nginx

    Наш проект давно уже перерос возможности одного сервера, и совсем недавно мы решили собрать кластер из нескольких вебсерверов и центрального сервера с базой данных. Как я уже писал, простое включение nginx в качестве проксирующего вебсервера уже значительно облегчает жизнь, но nginx может раскидывать запросы и по нескольким серверам. Вот пример такой конфигурации:


    upstream backend {
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
    }

    server {
    listen 80;
    server_name somedomain.tld;
    location ~* \.()$ {
    root /home/username/data/www/somedomain.tld; }
    location / {
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 16 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_connect_timeout 30s;
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location ~* /.(jpg|jpeg|gif|png|css|mp3|avi|mpg|txt|js|jar|rar|zip|tar|wav|wmv)$ {
    root /home/username/data/www/somedomain.tld;}
    }

    В этом случае все запросы будут равномерно раскидываться между серверами с внутренними айпишниками 192.168.1.1- 192.168.1.3

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