Страницы

понедельник, 27 декабря 2010 г.

Дополнительные клавиши мультимедийной клавиатуры. Multimedia keys on keyboard


Настройка нестандартной мультимедийной клавиатуры в Linux, процесс доступный, но имеющий массу тонкостей.

Заметка не "причесана", может содержать противоречия.

Мультимедийная клавиатура в Linux

4 подсистемы: Linux device driver, Linux evdev driver, Консоль, X-сервер

Обнаруженные ядром Linux, устройства ввода располагаются в файловой системе устройств /dev/input/.

$ ls /dev/input

by-id    event0  event2  event4  event6  mouse0
by-path  event1  event3  event5  mice
Названия не очень информативные, сразу невозможно сказать что к чему относиться, поэтому:
$ ls /dev/input/by-id -l
lrwxrwxrwx 1 root root 9 2012-03-27 09:57 usb-099a_USB_Keyboard-event-if01 -> ../event3
lrwxrwxrwx 1 root root 9 2012-03-27 09:57 usb-099a_USB_Keyboard-event-kbd -> ../event2
lrwxrwxrwx 1 root root 9 2012-03-27 09:57 usb-Creative_Technology_Ltd._VF0690_Live__Cam_Socialize_HD_AF_2011030800175-event-if00 -> ../event5
lrwxrwxrwx 1 root root 9 2012-03-27 09:57 usb-Philips_Electronics_Philips_USB_Digital_Speaker_System-event-if02 -> ../event4

Откуда уже видны названия устройств. Тут стоит заметить, что одно физическое устройство иногда отображается в два устройства event. Например USB Keyboard (клавиатура Dialog) - это два устройства event3 и event2.




Сканкоды (scancodes)
Кейкоды (keycodes)
X Символы  (XSymbols)

Консольные программы

Showkey

showkey - показывает коды ядра,а также scancodes (с опцией -s) генерируемые при нажатии на клавишу
для клавиш которые еще не привязаны, не показывает ничего, т.е.
для клавиш, которые не имеют отображения scancode в kernel keycode,
в dmesg выводится предупреждение:

Dumpkeys

$ sudo dumpkeys -i

Getkeycodes

getkeycodes -печатает таблицу ядра соответствия scancode-to-keycode

Loadkeys

Keymaps


Evtest

evtest - монитор событий устройств ввода. Если запустить  без параметров, будет предложен выбор.



X - программы

Xinput

$ sudo xinput --list

Покажет список зарегистрированных устройств, к примеру:

⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ USB Keyboard                             id=9 [slave  pointer  (2)]
⎜   ↳ ImPS/2 Generic Wheel Mouse               id=12 [slave  pointer  (2)]
⎣ Virtual core keyboard                   id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard             id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Sleep Button                             id=7 [slave  keyboard (3)]
    ↳ USB Keyboard                             id=8 [slave  keyboard (3)]
    ↳ Philips Electronics Philips USB Digital Speaker System id=10 [slave  keyboard (3)]
    ↳ VF0690 Live! Cam Socialize HD A         id=11 [slave  keyboard (3)]


$ sudo xinput -list-props "VF0690 Live! Cam Socialize HD A"
Выведет чуть подробнее по выбранному устройству:

Device Enabled (128): 1
Coordinate Transformation Matrix (130): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

Пока пользы от этого вывода нету.

Xev

xev - печатать события от устройств ввода


Быстрая модификация привязки keycode к xsymbol, при работающем X сервере:
# xmodmap -e 'keycode 164 = XF86Documents

После этого при нажатии клавиши с кодом 164 xev покажет что этот код привязан к X86Documents

В файле /usr/share/X11/XKeysymDB, предствлены xsymbols используемые X-сервером, такие как X86Documents

Постоянная привязка scancode к kernel keycode

/etc/rc.local - файл загружаемый при старте в самом конце

Пример: setkeycodes e016 171

Клавиатура Microsoft Digital Media Keyboard OEM


Эта клавиатура имеет режим работы USB и режим работы PS/2 через переходник.
Keycodes получаемые в режимах PS/2 и USB несколько отличаются.

Режим работы через PS/2 позволяет эмулировать протокол PS/2 и получить возможность настройки всех клавиш этой клавиатуры, но без функции горячего подключения.
Режим USB - некоторые клавиши не работают, но горячее подключение работает.
 "Клавиатура Microsoft Digital Media Keyboard OEM". USB

Идентификация lsusb: ID 045e:00b4 Microsoft Corp.

ls /usb/input/by-id -l

usb-Microsoft_Microsoft®_Digital_Media_Keyboard-event-kbd -> ../event6
usb-Microsoft_Microsoft®_Digital_Media_Keyboard-if01-event-kbd -> ../event6
usb-Microsoft_Microsoft®_Digital_Media_Keyboard-if01-kbd -> ../js0
usb-Microsoft_Microsoft®_Digital_Media_Keyboard-kbd -> ../js0

Примечание: js0 - интерфейс джойстика.

Для тестирования джойстика - программа jstest.

jstest /dev/input/js0 показывает 38 - вверх и 39 - вниз

cat /dev/input/js0

Мой вывод evtest
/dev/input/event5:Microsoft Microsoft® Digital Media Keyboard
/dev/input/event6:Microsoft Microsoft® Digital Media Keyboard
Для evtest, устройство представлено двумя клавиатурами ().

Input device ID: bus 0x3 vendor 0x45e product 0xb4 version 0x111
Input device name: "Microsoft Microsoft® Digital Media Keyboard"



Эта клавиатура имеет режим работы USB и режим работы PS/2 через переходник. Keycodes получаемые в этом режиме несколько отличаются.
В частности, для качельки ZoomIn/ZoomOut - в USB режиме коды 418/419,
а в режиме PS/2 186/187. Также кнопка LogOff в USB режиме имеет keycode = 433, а в режиме PS/2 180

Вот пример привязки нераспознанных сканкодов к keycode в файле /etc/rc.local

$ cat /etc/rc.local

# Не все клавиши клавиатуры работают
# Набор кнопок 1,2,3,4,5
# Для 1 кнопки код 148 отображается в код X86Lounch1
setkeycodes e073 148
# Для 2 кнопки код 149 отображается в код X86Lounch2
setkeycodes e074 149
# Для 3 кнопки код 202 отображается в код X86Lounch3
setkeycodes e075 202
# Для 4 кнопки код 203 отображается в код X86Lounch4
setkeycodes e076 203
# Для 5 кнопки код 184 отображается в код X86Lounch5
setkeycodes e077 164
# Кнопка My Favorites XF86Documents
setkeycodes e078 156
# Рычаг Zoom
setkeycodes e005 177
setkeycodes e00b 178
#
setkeycodes e011 179
# Кнопка LogOff 180 - KEY_EXIT(182)
setkeycodes e016 174

# Кнопки доступные при выключенной FLock
# Help TEST
setkeycodes e03b 191
# Undo TEAT
setkeycodes e008 192
# Redo KEY_REDO
setkeycodes e007 182
# New KEY_NEW
setkeycodes e03e 181
# Open
setkeycodes e03f
# Close KEY_CLOSE
setkeycodes e040 206
# Reply KEY_REPLY
setkeycodes e041 232
# Fwd KEY_FORWARDMAIL
setkeycodes e042 233
# Send
setkeycodes e043 231
# Spell TEST
setkeycodes e023 200
# Save KEY_SAVE
setkeycodes e057 234
# Print KEY_PRINT
setkeycodes e058 210

# коды для setkeycodes взяты из крайнего правого стоблца из файла
# cat /usr/share/X11/xkb/keycodes/evdev


Устройство Joystick

xxd

$ sudo xxd /dev/input/js0

xmodmap

jstest

jstest /dev/input/js0 показывает 38 - вверх и 39 - вниз
cat /dev/input/js0

Установка поддержки джойстика в Xorg.

$ sudo apt-get install joystick
$ sudo apt-get install xserver-xorg-input-joystick

После установки
 config/udev: Adding input device Microsoft Microsoft® Digital Media Keyboard (/dev/input/js0)
[  4523.148] (II) No input driver/identifier specified (ignoring)

xinput -list не показывает ничего нового.
Перезагрузка не добавила ничего нового.




Клавиатура Microsoft Office Keyboard

В режиме подключения USB определяется как 2 устройства event - основная и дополнительная клавиатура.

Клавиатура Microsoft Corp. Office Keyboard. Режим USB
$ lsusb
ID 045e:0048 Microsoft Corp. Office Keyboard 1.0A
$ ls /dev/input/by-id/ -l
usb-045e_Microsoft®_Office_Keyboard-event-if01 -> ../event4
usb-045e_Microsoft®_Office_Keyboard-event-kbd -> ../event3

Для evtest также 2 устройства:
Для event3 - основная клавиатура
Input device ID: bus 0x3 vendor 0x45e product 0x48 version 0x110
Input device name: "Microsoft® Office Keyboard"





USB-колонки Philips SP-672U

Имеют 3 кнопки - все кнопки работают.

$ ls /dev/input/by-id/ -l
usb-Philips_Electronics_Philips_USB_Digital_Speaker_System-event-if02 -> ../event4

Отсюда видно, что устройство назначен файл event4.
$ sudo evtest /dev/input/event4
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x471 product 0x104 version 0x100
Input device name: "Philips Electronics Philips USB Digital Speaker System"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 113 (Mute)
    Event code 114 (VolumeDown)
    Event code 115 (VolumeUp)
  Event type 4 (Misc)
    Event code 4 (ScanCode)
Testing ... (interrupt to exit)
Event: time 1332875324.583249, type 4 (Misc), code 4 (ScanCode), value c00e2
Event: time 1332875324.583254, type 1 (Key), code 113 (Mute), value 1
Event: time 1332875324.583255, -------------- Report Sync ------------
Event: time 1332875324.783255, type 4 (Misc), code 4 (ScanCode), value c00e2
Event: time 1332875324.783260, type 1 (Key), code 113 (Mute), value 0
Event: time 1332875324.783261, -------------- Report Sync ------------
Event: time 1332875327.231334, type 4 (Misc), code 4 (ScanCode), value c00e2
Event: time 1332875327.231339, type 1 (Key), code 113 (Mute), value 1
Event: time 1332875327.231340, -------------- Report Sync ------------
Event: time 1332875327.407342, type 4 (Misc), code 4 (ScanCode), value c00e2
Event: time 1332875327.407348, type 1 (Key), code 113 (Mute), value 0
Event: time 1332875327.407349, -------------- Report Sync ------------


Клавиатура USB Dialog

Маленькая компактная клавиатура. Стандартна - все клавиши работают. Интереса не заслуживает. В системе представлена в виде 2 устройств. 1 - стандартная клавиатура, 2 - дополнительная клавиатура (мультимедиа-клавиши).


Вебкамера Creative Live! Cam Socialize HD AF
Вебкамера имеет 1 клавишу. Не реагирует.

В терминале:
$ sudo showkey
не реагирует на нажатие клавиши на вебкамере.

В моей системе - устройство event5:

$ sudo evtest /dev/input/event5
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x41e product 0x4086 version 0x1010
Input device name: "VF0690 Live! Cam Socialize HD A"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 212 (Camera)
Testing ... (interrupt to exit)
также не реагирует на нажатие клавиши



$ cat /usr/share/X11/xkb/keycodes/xfree86 | grep 212
    <I54> =   212;



$ cat /usr/share/X11/xkb/keycodes/evdev | grep 212
<I212> = 212;   // #define KEY_DASHBOARD         204
<I220> = 220; // #define KEY_CAMERA              212



Это могут быть 3 вещи.
1. Неисправная кнопка. Исправность лучше проверить в Windows, установив комплектное ПО. Проверено, работает, надеюсь на пункт 2, но похоже п.3.
2. Ошибки в отображении кодов клавиш, на одной из стадий.
3. Неподдерживаемое оборудование. Выглядит как совместимое со стандартом, а на деле, что-то да забыли разработчики или наоборот добавили.





Справочники

/usr/share/X11/xkb/rules/base.lst
Note that a list of keyboard layouts and models can be found in /usr/share/X11/xkb/rules/base.lst
Используется в XKBModel

/usr/share/X11/XKeysymDB - список xsymbols

/lib/udev/keymaps/ - содержит настройки переопределения кодов >255 для клавиатур.



Опции ядра


Опция ядра atkbd.softraw=0, переключает ядро в режим native scancode
Без этой опции showkey -s показывает сканкоды только известные ядру (см. файл input.h) и пропускает сканкоды посылаемые клавиатурой! Можно также включить режим отладки модуля i8042, чтобы посмотреть сканкоды.
Опция ядра atkbd.softraw=0 может быть включена следующим образом.
Отредактировать файл /etc/default/grub, внести ее в строку GRUB_CMDLINE_LINUX_DEFAULT и после сохранения файла, выполнить в терминале sudo update-grub. Все, с правами суперпользователя.


Ресурсы

HOWTO Мультимедийные кнопки (клавиши)
http://ru.gentoo-wiki.com/wiki/HOWTO_%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BC%D0%B5%D0%B4%D0%B8%D0%B9%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8_%28%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8%29

HOWTO Добавление модели мультимедийной клавиатуры
http://ru.gentoo-wiki.com/wiki/HOWTO_%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BC%D0%B5%D0%B4%D0%B8%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B
Подключение Microsoft Natural 4000 в GNU/Linux
http://sphinx.net.ru/blog/entry/msnek-linux/
Использование мультимедийных клавиш
http://sphinx.net.ru/blog/entry/using-extra-keys/

Microsoft Wireless Comfort Keyboard 1.0a on Ubuntu Lucid Lynx 10.04
http://stefanobolli.blogspot.com/2010/08/microsoft-wireless-comfort-keyboard-10a.html


четверг, 18 ноября 2010 г.

Настройка сервера PostgreSQL под Ubuntu


Настройка сервера PostgreSQL под Ubuntu Linux
Заметки перенесены. Без редакции.

По умолчанию PostgreSQL устанавливается с высокой степенью защиты и не позволяет подключаться к серверу баз данных посторонним приложениям. Для корректной работы необходимо установить новые права доступа.


Настройка PostgreSQL для работы в локальном режиме

Для настройки PostgreSQL необходимо открыть окно консоли (xterm, gnome-terminal, konsole или другую). Далее необходимо выполнить следующие команды:
sudo su - postgres
nano /etc/postgresql/8.4/main/pg_hba.conf

Опуститесь в конец файла и отредактируйте последние строки как показано в примере:
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust

Нажмите Ctrl+O и Enter для сохранения файла, затем  и Ctrl+X для выхода из редактора.
Перезапустите компьютер либо выполните команды:
exit
sudo /etc/init.d/postgresql-8.4 restart

Настройка PostgreSQL для работы в сетевом режиме

Для настройки PostgreSQL необходимо открыть окно консоли (xterm, gnome-terminal, konsole или другую).
Далее необходимо выполнить следующие команды:
sudo su - postgres
nano /etc/postgresql/8.4/main/pg_hba.conf

Опуститесь в конец файла и отредактируйте последние строки как показано в примере:
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         192.168.0.0/24      trust

Выполните команду:
nano /etc/postgresql/8.4/main/postgresql.conf

Найдите в файле строчку: #listen_addresses = `localhost`

Отредактируйте текст рядом с этой строчкой в соответствии с примером:
listen_addresses = `*`                  # what IP address(es) to listen on;
                                                    # comma-separated list of addresses;
                                                    # defaults to `localhost`, `*` = all
                                                    # (change requires restart)
port = 5432                                 # (change requires restart)

Нажмите Ctrl+O и Enter для сохранения файла, затем  и Ctrl+X для выхода из редактора.

Перезапустите компьютер либо выполните команды:
exit
sudo /etc/init.d/postgresql-8.4 restart

вторник, 16 ноября 2010 г.

ImageMagick on DD-WRT HOWTO


ImageMagick DD-WRT HOWTO
Заметки перенесены. Без редактирования


Краткий формат изображения
http://informer.gismeteo.ru/new/5026-7.GIF

<a href="http://www.gismeteo.ru/city/daily/5026/"><img src="http://informer.gismeteo.ru/new/5026-7.GIF" alt="GISMETEO: Погода по г.Воронеж" title="GISMETEO: Погода по г.Воронеж" border="0"></a>

Для города Воронежа, ссылка на загрузку графика температуры
http://informer.gismeteo.ru/G34122-1.GIF
Информер
<a href="http://www.gismeteo.ru/towns/34122.htm"><img src="http://informer.gismeteo.ru/G34122-1.GIF" alt="GISMETEO: Погода по г. Воронеж" title="GISMETEO: Погода по г. Воронеж" border=0></a>


Для города Воронежа, ссылка на загрузку графика давления
http://informer.gismeteo.ru/G34122-P.GIF
Информер
<a href="http://www.gismeteo.ru/towns/34122.htm"><img src="http://informer.gismeteo.ru/G34122-P.GIF" alt="GISMETEO: Погода по г. Воронеж" title="GISMETEO: Погода по г. Воронеж" border=0></a>

Для города Воронежа, ссылка на загрузку графика ветров
http://informer.gismeteo.ru/G34122-W1.GIF

<a href="http://www.gismeteo.ru/towns/34122.htm"><img src="http://informer.gismeteo.ru/G34122-W1.GIF" alt="GISMETEO: Погода по г. Воронеж" title="GISMETEO: Погода по г. Воронеж" border=0></a>

XML-выдача прогноза
Обновляющийся 4 раза в сутки (2.30, 8.30, 14.30, 20.30 МСК по зимнему времени) блок xml-данных с прогнозом погоды на сутки вперед для выбранного Вами города находится по адресу:
http://informer.gismeteo.ru/xml/34122_1.xml
Внимание! Использование информации допускается только при условии, что непосредственно над или под блоком с погодой на Вашей странице будет указана ссылка на источник информации в виде изображения логотипа проекта Gismeteo.Ru или текстовой строчки "Предоставлено Gismeteo.Ru". В любом случае гиперссылка на сайт www.gismeteo.ru является обязательной!

Логотип в векторной форме можно загрузить в форматах Adobe Illustrator или CorelDRAW
Обновляющийся 4 раза в сутки (2.30, 8.30, 14.30, 20.30 МСК по зимнему времени) блок xml-данных с прогнозом погоды на сутки вперед для выбранного Вами города находится по адресу:
http://informer.gismeteo.ru/xml/34122_1.xml
Описание формата XML:
TOWN информация о пункте прогнозирования:
  index уникальный пятизначный код города
  sname закодированное название города
  latitude широта в целых градусах
 longitude долгота в целых градусах
FORECAST информация о сроке прогнозирования:
  day, month, year дата, на которую составлен прогноз в данном блоке
  hour местное время, на которое составлен прогноз
  tod время суток, для которого составлен прогноз: 0 - ночь 1 - утро, 2 - день, 3 - вечер
  weekday день недели, 1 - воскресенье, 2 - понедельник, и т.д.
  predict заблаговременность прогноза в часах
PHENOMENA   атмосферные явления:
  cloudiness облачность по градациям:  0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно
  precipitation тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков
  rpower интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег
  spower вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза
PRESSURE атмосферное давление, в мм.рт.ст.
TEMPERATURE температура воздуха, в градусах Цельсия
WIND приземный ветер
  min, max минимальное и максимальное значения средней скорости ветра, без порывов
  direction   направление ветра в румбах, 0 - северный, 1 - северо-восточный,  и т.д.
RELWET относительная влажность воздуха, в %
HEAT комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу

Спутниковая карта облачности от meteoinfo.ru
http://meteoinfo.ru/media/satel/latest_r_i.jpg
погода
http://meteoinfo.ru/images/stories/15112current.png

Облачность над югом россии
http://smis.iki.rssi.ru/data/today/map2_r.gif


Загрузка сведений
wget http://informer.gismeteo.ru/new/5026-7.GIF
wget http://informer.gismeteo.ru/G34122-1.GIF
wget http://informer.gismeteo.ru/G34122-P.GIF
wget http://informer.gismeteo.ru/G34122-W1.GIF
wget http://informer.gismeteo.ru/xml/34122_1.xml
wget http://meteoinfo.ru/media/satel/latest_r_i.jpg
wget http://smis.iki.rssi.ru/data/today/map2_r.gif

# wget опция --output-file, позволит сохранить на диске, загруженный файл, под указанным именем



Преобразование изображений в формат понимаемый модулем vesamenu.c32 из пакета PXELINUX
convert 5026-7.GIF voronezh_small_src.png
convert G34122-1.GIF voronezh_temp_week_src.png
convert G34122-P.GIF voronezh_pressure_week_src.png
convert G34122-W1.GIF voronezh_wind_week_src.png
convert latest_r_i.jpg meteoinfo_latest_src.png

эффекты применяемые к отдельным изображениям
 convert voronezh_small_src.png \( +clone -background '#493B38' -shadow 80x3+5+5 \) +swap -background none -flatten voronezh_small.png
 convert voronezh_temp_week_src.png \( +clone -background '#493B38' -shadow 80x3+5+5 \) +swap -background none -flatten voronezh_temp_week.png

 convert meteoinfo_latest_src.png \( +clone -background '#493B38' -shadow 80x3+5+5 \) +swap -background none -flatten meteoinfo_latest.png


-background navy - это цвет тени, можно задать в виде: -background '#493B38'
Цвет с экрана можно получить с помощью пипетки gcolor2
-background '#4F6267'
-background '#493B38'

Создание комбинированного изображения с наложением 2 изображений
описание на сайте imagemagick: http://www.imagemagick.org/Usage/layers/

composite -geometry +100+860 voronezh_small.png fractal.png 1.png
composite -geometry +100+860 meteoinfo_latest.png 1.png 2.png

Создание изображений текста и надписей
http://www.imagemagick.org/Usage/text/

Просмотр шрифтов доступных imagemagick: convert -list font
Простой пример:
convert -font URW-Chancery-Medium-Italic -fill '#493B38' -pointsize 72 label:'Погода в Воронеже'  labelvoronezh.png
Можно добавить опцию: -gravity center для размещения надписи по центру выходного изображения, при задании размера
Текст из файла /etc/motd задается так: label:@/etc/motd

Добавление прозрачности фона
Простой пример:
convert -size 820x100 xc:transparent -font URW-Chancery-Medium-Italic -fill '#493B38' -pointsize 72 -trim +repage label:'Погода в Воронеже'  labelvoronezh.png

convert -size 820x100 xc:transparent -font URW-Chancery-Medium-Italic -pointsize 72 -fill gold -annotate +24+64 'Погода в Воронеже' -trim +repage labelvoronezh.png

convert -size 820x100 xc:transparent -font URW-Chancery-Medium-Italic -pointsize 72 -fill gold -annotate +24+64 'Voronezh Weather' -trim +repage labelvoronezh.png

convert -size 820x100 xc:transparent -font URW-Chancery-Medium-Italic -pointsize 72 \
           -fill black        -annotate +24+64 'Погода в Воронеже' \
           -fill '#DBD0D5'    -annotate +26+66 'Погода в Воронеже' \
           -fill transparent  -annotate +25+65 'Погода в Воронеже' \
  -trim +repage labelvoronezh.png
Соединяем с предыдущим этапом
composite -geometry +00+20 -gravity north labelvoronezh.png 1.png 3.png

Надпись для основного экрана
convert -size 820x100 xc:transparent -font Liberation-Serif-Regular -pointsize 72 \
           -fill black        -annotate +24+64 'Домашняя сеть' \
           -fill '#DBD0D5'    -annotate +26+66 'Домашняя сеть' \
           -fill transparent  -annotate +25+65 'Домашняя сеть' \
  -trim +repage labelnetwork.png
composite -geometry +00+20 -gravity north labelnetwork.png fractal.png 4.png


URW-Palladio-Roman

#D2CCD6
#DBD0D5

Фоновое изображение + загруженные изображения
smb://dir-320/tftpboot/fractal.jpeg

Настройка планировщика cron на загрузку по расписанию
Настройка для роутера DIR-320 с прошивкой DD-WRT

convert -size 820x100 xc:transparent -font Times-Roman -fill '#493B38' -pointsize 72 -trim +repage label:'Voronezh test'  test.png



воскресенье, 9 мая 2010 г.

Настройка программатора FT232RL в Linux Ubuntu


Настройка программатора AVR на базе микросхемы фирмы FDTI FT232RL в Ubuntu 10.04
Перенесенные заметки. Без редакции.

0. Подготовка Ubuntu к компиляции программ
sudo apt-get install patch build-essential libreadline-dev libncurses-dev libusb-dev
sudo apt-get build-dep avrdude avrdude-doc
это установить последнюю версию программы avrdude-5.10 но она не поддерживает ft232rl

0. Подготовка папки, в которой будет компилироваться и существовать программатор avrdude
cd ~
mkdir avrdude
cd avrdude - переходим в папку

0. Загрузка исходников программы avrdude с сайта:
http://ftp.twaren.net/Unix/NonGNU/avrdude/
Для наших целей подходит версия 5.8
wget http://ftp.twaren.net/Unix/NonGNU/avrdude/avrdude-5.8.tar.gz

0. Извлечение архива программы avrdude
tar xzf avrdude-5.8.tar.gz
cd avrdude-5.8

0. Применение патчей для версии 5.8
Иные версии не патчаться автоматически.
Загружаем:
for i in 8 7 6 5 4 3 2 1 0; do wget -O patch-$i.diff http://savannah.nongnu.org/patch/download.php?file_id=1851$i; done
Применяем(патчим):
for file in patch-*.diff; do patch -p0 < $file; done
Все происходит в катологе исходных кодов программы avrdude-5.8

0. Загрузка специального драйвера D2XX для микросхемы FT232RL с сайта фирмы FTDI.
Специальный драйвер для режим Bitbang - прямого управления пинами микросхемы
Для 32-bit Ubuntu linux
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16.tar.gz
Все происходит в катологе исходных кодов программы avrdude-5.8
Для 64-bit Ubuntu Linux
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16_x86_64.tar.gz

0. Извлечение драйвера и настройка драйвера
tar xzf libftd2xx*.tar.gz
cp libftd2xx*/static_lib/* .
cp libftd2xx*/*.h .
cp libftd2xx*/*.cfg .

Помещаем библиотеку драйвера в /usr/local/lib и настраиваем на нее ссылки:
cp libftd2xx.so.0.4.16 /usr/local/lib
cd /usr/local/lib
ln -s libftd2xx.so.0.4.16 libftd2xx.so.0

cd /usr/lib
ln -s /usr/local/lib/libftd2xx.so.0.4.16 libftd2xx.so.0


0.
./configure

0. Редактирование Makefile

   1. Найти строку CFLAGS = -g -O2 и заменить ее строкой CFLAGS = -g -O2 -DHAVE_LIBUSB -DSUPPORT_FT245R.
   2. Найти строку LIBS = -lreadline -lncurses -ltermcap и заменить ее строкой
 LIBS = -lreadline -lncurses -ltermcap ./libftd2xx.a.0.4.16 -lrt.

0. Сборка программы
make

0. Перед запуском
Так как, в linux ядре, встроен драйвер для микросхемы FTDI FT232RL в качестве
usb-serial интерфейса, перед запуском программы надо выгрузить из памяти модули
этого стандартного драйвера
rmmod fdti_sio
rmmod usbserial

это надо делать после каждой перезагрузки


0. Запуск программы
Запуск программы производится из под root

sudo ./avrdude -C avrdude.conf -c duemilanove -P ft0 -p m16

опция -p m16 - это для микроконтроллера m16


Вывод программы должен напоминать следующее:
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK

 ft245r:  bitclk 230400 -> ft baud 115200
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Можно прошить микроконтроллер загрузчиком (bootloader) и после этого применять
загрузку пользовательской программы используя обычный
программатор -P avr109 через последовательный порт и с последней версией avrdude-5.10
Работает также из под обычного пользователя

Помни - загрузчик работает ограниченное время после установки bootloaderа


avrdude -c avr109 -P /dev/ttyUSB0 -p m16
Вывод:
Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 0.8; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x75

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403

avrdude done.  Thank you.

0. Прошивка микроконтроллера с уже установленным загрузчиком.

Нажать кнопку ресет
Сразу выполнить команду:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16

Операция чтения памяти микроконтроллера и записи в файл на диске:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16 -U flash:r:read.hex:i
Будет считан и записан файл read.hex в формате intel hex (опция формата - i), другие форматы -h - шестнадцатиричное представление, b - бинарное
и т.п.

Операция записи в память микроконтроллера файла прошивки:
avrdude -c avr109 -P /dev/ttyUSB0 -p m16 -U flash:w:write.hex:a
опция a - автоопределение формата




0. Работа с портом (Serial terminal)
Есть очень удобные простые программы для обмена данными с микроконтроллером
по последовательному порту, некоторые представляют собой графические приложения
cutecom
microcom
moserial - используется
minicom

ser2net - демон, принимающий соединяния через TCP и переправляющий их в последовательный порт. Вещь. Может использоваться как удаленный доступ к
микроконтроллеру.


0. Подготовка программы на ассемблере
Ассемблер avra не совмем понимает макрокоманды ассемблера из avr-studio и поэтому в файле определений микроконтроллера пришлось
внести изменения (убрать все ненужные макрокоманды, благо их там не так много).
Также для байтовых массивов требуется четное выравнивание байт на каждой линии. Пришлось подправить исходник.



Справочно:
Схему программатора можно взять здесь:
http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html

Исходное руководство:
http://doswa.com/blog/2009/12/20/avrdude-58-with-ftdi-bitbang-patch-on-linux/

Описание на русском программы программатора:
http://mcontroller.opentomsk.net/index.php/Avrdude