Sunday, April 28, 2013

Читаем SMS из модема Huawei E153u-1

Итак, есть указанный модем. Необходимо под LMDE x64 каким-то образом читать SMS.
Все возможные версии MobilePartner, найденные на просторах интернетиков, зафейлились либо на этапе установки, либо на этапе запуска.
Больше в их сторону не смотрим.
Нам понадобится gammu + wammu (последний для GUI). Но об этом чуть ниже.

Прежде всего, обнаружилась проблема. Модем не хотел определяться после того, как был вынут из USB-порта. Поиски привели к решению проблемы:

1. Проверяем атрибуты USB, на котором висит модем:
lsusb

в моём случае вывод был следующий:
Bus 004 Device 018: ID 12d1:1446 Huawei Technologies Co., Ltd.

2. Редактируем udev rules:
sudo nano /lib/udev/rules.d/40-usb_modeswitch.rules

Ищем устройство с idVendor 12d1 (из предыдущего вывода) и idProduct 1446 (опять же из предыдущего вывода). Такового нет, поэтому добавляем его ручками по аналогии с имеющимися записями для прочих хуавеев:

# Huawei E153u-1
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="usb_modeswitch '%b/%k'"
3. Достаём модем, втыкаем назад. Через некоторое время появляется запрос PIN'а. Не верим своим глазам, проверяем:
dmesg | grep tty
И действительно, устройство было опознано:
[ 3222.977099] usb 4-1.2.4: GSM modem (1-port) converter now attached to ttyUSB0
[ 3222.980352] usb 4-1.2.4: GSM modem (1-port) converter now attached to ttyUSB1
[ 3222.980438] usb 4-1.2.4: GSM modem (1-port) converter now attached to ttyUSB2

Итак, проблему решили.

Здесь важно сделать ещё один пункт, иначе возможны проблемы.
На апплете network-manager'а правой кнопкой и снимаем галку напротив Enable Mobile Broadband. Интернетики уверяют, что в противном случае возможны дедлоки и wammu не сможет ничего прочесть.

Всё готово. Теперь осталось настроить gammu + wammu для выполнения непосредственно поставленной цели.

Перво-наперво запускаем
gammu-config
и выбираем порт /dev/ttyUSB0 (первый из тех, что нам выдал dmesg).
Connection оставляем как есть - at19200.
Всё остальное, в принципе, тоже оставляем как есть, сохраняем конфиг (сохраняется в ~/.gammurc).

Можем попробовать прочитать SMS-ки в памяти телефона из консоли:
gammu getallsms
Получаем список SMS, ликуем.

Дальше открываем wammu и видим чудненький GUI.
Делаем по порядку:
- Phone -> Connect, ожидаем соединения с устройством
- Retrieve -> Messages.
Получили список SMS в гуях. Чётко, красиво, аккуратно.

Всё. Задача решена.

Из возможных проблем - wammu не всегда работает корректно. Например у меня иногда виснет в процессе сбора SMS. Тогда:
sudo killall wamu
и запускаем по новой :)

Ещё одна интересная особенность. После прописывания устройства в udev rules файлик, модем стал определяться под другим ID:
Bus 004 Device 020: ID 12d1:14ac Huawei Technologies Co., Ltd.
Т.е. Vendor ID остался прежним (12d1), а Product ID сменился (14ac вместо 1446). Но, как ни странно, теперь всё работает как часы, несмотря на то, что в udev rules устройство с Product ID 14ac не прописано.
Магия, мать её за ногу...

Wednesday, March 27, 2013

Установка системы на SSD: тонкости и тюнинг

В конфигурации два HDD:
  • sda: SSD Crucial M4 128 GB
  • sdb: HDD Seagate SATA-III 3Tb ST33000651AS
На SSD стоит Windows 7.
Схема разбиения для линуксовых разделов была принята следующая:
  • sda3 - /boot (200M)
  • sda4 - extended partition
  • sda5 - / (30G)
  • sda6 - swap (8G)
и
  • sdb4 - /tmp (10G)
  • sdb5 - /var/log (4G)
  • sdb6 - /home (сколько останется :)

В процессе установки выяснилось, что инсталлятор LMDE не умеет создавать разделы на разных устройствах. Пришлось выделить временно разделы на sda для /tmp, /var/log и /home (выделял по 2G).
После установки создал при помощи обожаемого GParted Live нужные разделы на sdb и скопировал разделы поштучно при помощи
$ cp -ax /old_content /new_content
The -a option preserves the original system as much as possible. The -x option limits cp to a single file system... (c) Источник
Т.е. опция -x нужна для предотвращения копирования подмонтированных файловых систем. В моём случае один раздел нужно просто скопировать в другой, так что опция -x теряет смысл (оставляю её здесь на память для себя).
После копирования старые разделы можно удалить, а для новых обновить /etc/fstab:
# /dev/sdb4
UUID=7aaf7a78-...   /tmp   ext4   rw,errors=remount-ro   0 0
# /dev/sdb5
UUID=aeacecfd-...   /var/log   ext4   rw,errors=remount-ro   0 0
# /dev/sdb6
UUID=0dff36fd-...   /home   ext4   rw,errors=remount-ro   0 0

После этого первым делом добавил опцию discard для раздела /, который находится на SSD:
# /dev/sda5
UUID=c97278c1-...   /   ext4   rw,discard,errors=remount-ro   0 1
И изменил кое-какие дополнительные настройки:
  • в /etc/sysctl.conf дописал:
vm.dirty_writeback_centisecs = 6000
vm.swappiness = 0
что заставляет свопить только при заполнении всей физической памяти, а также устанавливает лимит отложенной записи в 60 секунд (100 centisecs = 1 sec);
  • заменил I/O планировщик (по умолчанию CFQ) на DEADLINE, для этого:
    • а) в /etc/default/grub изменил строку GRUB_CMDLINE_LINUX_DEFAULT и добавил в конец elevator=deadline
    • б) для обновления Grub выполнил:
sudo update-grub

Источники информации: раз и два.

Вводная

Серия заметок про GNU/Linux.

Создана как хранилище полезных знаний, которые позже не лишним будет перечитать самому.

Стартовый дистрибутив - Linux Mint Debian Edition (LMDE), т.к. ноги растут из Debian, и помимо этого имеет человеческое лицо и шикарную рабочую среду Mate.

О подсветке синтаксиса в блоге читать здесь.
Пример для bash на сайте автора.

Плюс фикс стилей от NathanAldenSr, взят здесь: http://stackoverflow.com/questions/11804789/extra-lines-using-syntaxhighlighter-for-chrome-only

Поехали!