LINUX.ORG.RU

Сообщения Eddy_Em

 

USB CDC, где почитать по-человечески?

Товарищи, ну подскажите, пожалуйста, литературу по USB CDC. Нет сил уже листать technical reference: никак не могу найти, как работать с вызовами SET_CONTROL_LINE_STATE и GET_LINE_CODING.

Насчет SET_CONTROL_LINE_STATE понял лишь, что вызывается эта штука при обращении к устройству (handshake) и при отключении. Таким образом, я могу анализировать, работает ли в текущий момент какой-нибудь процесс с терминалом по USB, или нет.

SET_LINE_CODING вызывается при подключении ioctl'ами — это понятно. Использую его для изменения скорости USART'а. Правда, какой-то косяк у меня: если сначала к USART'у подключиться, скорость получается совершенно не такой, как должна была бы быть (а вот когда подключаюсь по USB с заданными параметрами, то USART уже работает как надо).

GET_LINE_CODING — как сделать этот вызов? Когда я из программы вызываю

	if(ioctl(comfd,TCGETA,&oldtty) < 0) exit(-1); // Get settings
	printf("old cflag: %d\n", oldtty.c_cflag);
то получаю 6322==014262, т.е. B115200 там есть:
#define  B115200  0010002
однако, на тестовом терминале, подключенном к UART (туда откидываются диагностические сообщения), нет сообщения о вызове метода GET_LINE_CODING.

Вопросы:

  • что надо сделать, чтобы на USB CDC вызвать метод GET_LINE_CODING?
  • как определить именование устройства? Я хочу, чтобы оно было /dev/ttyUSBx, как у переходничков USB<->TTL, но оно определяется как /dev/ttyACMx — это делается на основе какой-то таблицы с VID/PID? Где взять эту таблицу?

P.S. Если кому интересно — это часть ircontroller (директория with_opencm3).

 , ,

Eddy_Em
()

После починки HP LJ 1200 принтер не проходит самопроверку

Когда-то в начале года у меня в принтере накрылся захват бумаги (громко тарахтел и пропускал листы). Я разобрал принтер, подрихтовал что нужно напильником и собрал. Но вот беда — осталась вот такая «сдача»: две мелкие (меньше фаланги большого пальца) белые пластмасски (еще 2 шурупчика осталось, но это не страшно).

Может кто разбирал подобные принтеры — откуда эти пластмасски могут быть? Вроде бы я все концевики водрузил на место, но как включаю — самопроверка мыргает весело светодиодами, потом прокручивает барабан и мигает оранжевым, мол, ошибка...

Дело в этой «сдаче» или же я какой-то концевик забыл подключить?

 , ,

Eddy_Em
()

Некоторые приложения «приклеиваются» к одному экрану (multimonitor)

Я подобное еще давно заметил на работе: openoffice4 или либреофис намертво "приклеиваются" к одному монитору и их невозможно перетащить на другой. Но я не обращал на это особого внимания, т.к. этими текстовыми редакторами пользуюсь не так уж и часто (предпочитаю kile и geany).

Но вот вчера дома (тоже 2 экрана: монитор и телевизор) запустил kicad, и окно eeschema вылезло на телевизор! Вернуть его помогло только отключение телевизора через xrandr. Окно не то, что не хотело с телевизора возвращаться, но и вообще не двигалось!

WM — IceWM. На работе старый арчик, дома — гента.

Возможно ли как-то пресечь подобное дурацкое поведение окон? А еще бывает проблема, что окно "запоминает" монитор, на котором до этого выводилось, и если его через xrandr отключить, то окно открывается где-то в небытие! Лечится ли это?

 , ,

Eddy_Em
()

Вот такой вот HP!

Вроде бы, ноутбуки приличные, а на днях вебка отвалилась. Хотел с женой по скайпу потрындеть, но видео не заработало. Посмотрел dmesg: ругань на порт, к которому вебка подключена (постоянный disconnect). Если открыть mplayer'ом, то /dev/video0 внезапно исчезало и появлялось /dev/video1 (и наоборот) с руганью в dmesg.

А сейчас вообще нет никаких /dev/videoX. Судя по этому:

[    2.600766] usb 3-1.3: new high-speed USB device number 6 using ehci-pci
[    3.075471] usb 3-1.3: unable to read config index 0 descriptor/all
[    3.075550] usb 3-1.3: can't read configurations, error -71
[    3.345171] usb 3-1.3: new high-speed USB device number 7 using ehci-pci
[    3.758746] usb 3-1.3: device not accepting address 7, error -71
[    3.945862] usb 3-1.3: new high-speed USB device number 8 using ehci-pci
[    4.102475] usb 3-1.3: new high-speed USB device number 9 using ehci-pci
[    4.259383] usb 3-1.3: new high-speed USB device number 10 using ehci-pci
[    4.673052] usb 3-1.3: device not accepting address 10, error -71
[    4.753206] usb 3-1.3: new high-speed USB device number 11 using ehci-pci
[    5.166964] usb 3-1.3: device not accepting address 11, error -71
сдохла зараза!

Придется теперь еще и таскать с собой внешнюю камеру ☹

 ,

Eddy_Em
()

Да неужто?

ДАНУНАФИГ!

Вот пытаюсь найти западлянку. Где она?

// если что, речь о телефонном спаме

 

Eddy_Em
()

Правило udev, которое будет срабатывать даже на старте системы

Вот как так сделать? А то иной раз забуду мышку вынуть при включении ноутбука, в результате работает тачпад.

Правило:

ACTION=="add", SUBSYSTEM=="input", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/eddy/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/eddy/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"

Eddy_Em
()

dhclient не работает при запуске udev'ом

Странные вещи творятся с моим 4G-модемом: почему-то вот этот скрипт

#!/bin/bash
STATUS=0

if [ "$1" = "on" ]; then
    ifconfig beeline up
    sleep 1
    ifconfig eth0 down
    sleep 3
#    for i in $(seq 1 10); do
#       aplay /usr/share/skype/sounds/CallConnecting.wav
        dhclient beeline #&& break
#       sleep 2
#    done
    aplay /usr/share/skype/sounds/CallRingingIn.wav
else
    ifconfig beeline down
    ifconfig eth0 up
fi
не отрабатывается правильно. Т.е. при подключении модема ps показывает, что dhclient запускается, однако, в реальности ничего не происходит. Между тем, если этот скрипт запустить вручную, он отлично сразу отрабатывает.

Вопрос: это как-то лечится?

P.S. система на ноуте: древний арчик (3.9.2-1-ARCH), udev из пакета systemd-196-2, система инициализации — sysvinit.

 , ,

Eddy_Em
()

Я твой гента emerge шатал!

Скотина! Уже второй раз трачу ~5 часов компеляния впустую: дома тупит огнелис, я подозреваю, что это из-за того, что часть библиотек собрана со старыми флагами. Решил поэтому на работе пересобрать весь мир.

Запускаю emerge -eDN world, через 5 часов компеляния вижу кирдык:

>>> Failed to emerge dev-java/ant-core-1.9.2
ОК, где наша не пропадала? Делаю emerge -C ant-core и запускаю заново. Та же хрень!

Ну что за [censored]?!

Сейчас буду искать, что за собака эту пакость хочет в зависимостях и вычищать все эти авгиевы конюшни.

 , ,

Eddy_Em
()

С окончанием первого дня лета!

Сегодня было солнцестояние. Поздравляю. Как обычно, о Купале забыли ☹

Eddy_Em
()

Как замаскировать world?

Как сделать так, чтобы даже если я по-пьяни напишу emerge -euvDN world, никаких последствий не было и просто пересобрались те пакеты, что уже стоят!

В свете наступающего линуксокапца уже совершенно невозможно доверять автообновлениям: сегодня они поставят пульсу ради скайпа, а завтра системд забульбенят? И за что боролись?

В случае с emerge -u system все проще: там практически все можно смело обновлять, замаскировав лишь udev и еще пару-тройку сервисов, которые обновлять категорически нельзя.

Итак, что хочется: обновление system автоматом все обновляет (а что обновлять не надо, я замаскирую вручную), а обновление world тупо пересобирает все, что установлено (а если я что-то захочу вдруг обновить, я вручную укажу этот пакет, потому что достойных для обновления пакетов всего 2: freecad и kicad; ну, может, еще sdcc какой допилят получше).

 

Eddy_Em
()

X11 и выполнение «su -l»

Я уже черт-те сколько пользуюсь линуксом, но вот только сейчас что-то захотелось мне от рута запустить иксовое приложение. И я обнаружил, что нифига не работает: переменная DISPLAY не передается «по наследству», несмотря на ключик -l.

Запихал руту в ~/.bashrc добавление xauth от пользователя + установку DISPLAY:

xauth merge /home/eddy/.Xauthority
export DISPLAY=:0

Иксовые приложения стали запускаться, однако ведь этот способ совершенно дрянной: если я зайду по ssh, получится хрен знает что. Если я сделаю su в консоли, то тоже черт те что получится.


Я знаю, что иксовые приложения руту нафиг не нужны. Но чисто любопытства ради: как в этом случае решать проблему?

Узнать, какой пользователь сейчас иксы запустил, автоматом xauth merge сделать, узнать нужное значение $DISPLAY и подставить? А готовым скриптиком не поделитесь?

 , ,

Eddy_Em
()

Проблема с openssl

Итак, дома у меня гента. Собираю я пакеты на работе, а дома устанавливаю через emerge -K. Однако, возникла такая проблема: не работает openssl.

Я даже пробовал откатиться на 1 версию назад, собрав пакет на домашнем компьютере. Все собирается устанавливается, однако, на стадии регенерации сертификатов получается вот что:

 * Running 'c_rehash /etc/ssl/certs/' to rebuild hashes #333069 ...
/usr/bin/openssl: symbol lookup error: /usr/bin/openssl: undefined symbol: i2d_ECPKParameters
...
При запуске самого openssl он пишет:
openssl
openssl: symbol lookup error: openssl: undefined symbol: i2d_ECPKParameters
equery говорит, что у меня эта версия установлена:
equery l openssl
 * Searching for openssl ...
[IP-] [  ] dev-libs/openssl-1.0.1g:0


Что нужно переустановить, чтобы заработала openssl?

Из-за нее и ssh не работает:

ssh
ssh: symbol lookup error: ssh: undefined symbol: EC_GROUP_set_asn1_flag

 , ,

Eddy_Em
()

Есть кто из разработчиков кикада?

А то что-то в «About» смотрю — а там ни одного русского. Может, появились?

Есть кое-какие мыслишки по поводу добавления новых фич. Я бы реализовал, но с С++ не дружу и вообще в этом бустогенераторе запутался.

Для начала — элементарно хотелось бы добавить в eeschema возможность импорта внешних модулей при создании «иерархических листов», причем вместе с печаткой. Автоматом конвертировать обозначения (скажем, вместо R1,R2... для одного и того же элемента на разных листах писать R1a.1, R1a.2 и т.д.) и затем в pcbnew при импорте нужного куска клонировать его в правильном количестве, автоматом конвертируя имена элементов и цепей.

Еще было бы здорово автоматом переименовывать элементы и цепи в pcbnew по схеме в eeschema (скажем, сдуру сделал полное переименование элементов, а потом решил импортировать кусок печатки в pcbnew).

И с шинами как-то мутно: допустим, имеем BUS[0..15] на двух одинаковых «иерархических листах». Впихиваем их на лист выше и хотим наружу вывести совместную шину вида BUS[0..31]. И получаем фигвам: вторую шину BUS[0..15] просто так в BUS[16..31] не переименуешь. А уж слияние двух шин BUS[0..15] и BUS[16.31] тоже не даст результатом шину BUS[0..31] (по поводу этого на стакиксчендже до сих пор висит вопросик. Я-то плюсанул, но что-то решений не видать.

Или начинать вспоминать С++ и перелопачивать Страуструпа с мануалами на буст?

 ,

Eddy_Em
()

Где взять qcad?

Что-то не хочет в генте устанавливаться qcad из оверлеев: матюкается на невозможность скачивания файлов с qt-шными библиотеками.

Вопрос: как его по-человечески поставить?

Либрекад не предлагать, т.к. либрекад — жуткое вырвиглазное неюзабельное говно.

 ,

Eddy_Em
()

Kicad batch editing

Нет ли в кикаде случаем "шаблонного" редактирования?

Пример: рисую я три шины на 16 проводников. Каждую надо промаркировать на чертеже Hierarchy и на главном. Копирование решается при помощи ctrl+c (кстати, странно, что нет ctrl+v — приходится жамкать в панельке кнопочку). А вот создание...

Хочется так: нарисовал 1 метку, жамкнул "копировать с инкрементом" и создалось 16 меток вида T1_1...T1_16. Или же так: создал 16 меток, скопировал, затем выделил и щелкнул "заменить по regex", ввел "T1 → T2a" и получил набор меток T2a_1...T2a_16.

Пока что приходится делать так: нарисовал 16 первых меток в виде Txxx_1 в свободной части листа + скопировал еще раз, закрыл кикад (иначе он, собака, из кэша файлы восстановит), открыл в mcedit нужный sch-файл, нажал F4, заменил 16 раз Txxx на T1, сохранил, открыл кикад, перенес куда надо, повторил для остальных. Жутко неудобно.

Или, быть может, кикад умеет скрипты, а я этого не знаю?

 ,

Eddy_Em
()

Ненужно поломалось? (live stream on 1tv.ru)

Уже больше недели потоковое телевидение на 1tv.ru не работает. В прошлый раз из-за этого нам с женой пришлось 2 дня ждать, пока КВН в нормальном качестве на ютуб выложат.

Вопрос: это у всех так и виноваты скотские проприетарщики, или это опять мое рукожопие?

 ,

Eddy_Em
()

Можно ли в kicad использовать один и тот же лист sch в нескольких hierarchical sheets?

Пытаюсь нарисовать схему по блокам. Некоторые блоки повторяются (скажем, узел управления шаговыми двигателями повторяется 5 раз). На сводной схеме я воткнул его в Hierarchical sheet, а потом скопировал еще 4 раза. При автоматической маркировке элементов kicad ругается, что на одинаковые элементы.

Вопрос: как мне один кусок схемы вставить в сводную схему 5 раз, чтобы можно было спокойно потом сделать разводку печатки? Неужто только дурацкий метод копипасты годится? Страшно же получится!

 ,

Eddy_Em
()

Как решить проблему 12309?

Задолбали уже тормоза: поставил вечером на работе пересобираться генту, из 915 пакетов пересобралось 730. Тормозит так, что работать невозможно, отправил emerge'у сигнал SIGSTOP. Вечером возобновлю.

Внимание, вопрос: доколе дисковый IO будет превращать всю систему в «папа, а правда, что линукс — многозадачная система? Да, сынок, но пока подожди, пока emerge закончит свою работу»?

Компиляю в chroot, ядро материнской системы: 3.6-pf (т.е. как бы все нужные патчи уже есть и тормозить не должно).

Конфигурация железа: четырехъядерник i5 x2.8ГГц; 6ГБ оперативы DDR2. Винт — SATA. Да, чипсет на материнской плате — интеловская дрянь. Но не настолько же он дряной, чтобы малейшие IO с использованием SATA вешали систему до состояния «пшел нафиг»?!

Кстати, дома та же история, но еще плачевней: там подохлее процессор + всего 2ГБ оперативы. Когда собирал gcc, компьютер вусмерть завис на час, потом oom-killer таки убил компилятор!

Можно ли с этим бороться? Вдруг есть какие-то волшебные настройки sysctl.conf кроме того, что там уже есть:

# 12309
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
vm.dirty_bytes = 2097152
vm.dirty_background_bytes = 2097152
???

Ведь совершенно невозможно работать с такими тормозами!

// переходить на SSD по причине нищебродства не выйдет. Обновить железо в ближайшее время — тоже.

 ,

Eddy_Em
()

Не собирается webkit-gtk

Выдает вот такой матюк:

/usr/bin/msgfmt -c -o Source/WebCore/platform/gtk/po/ru.mo Source/WebCore/platform/gtk/po/ru.po
Source/WebCore/platform/gtk/po/ru.po:2: warning: header field 'Language' still has the initial default value
/usr/bin/msgfmt: found 1 fatal error
GNUmakefile:81955: recipe for target 'Source/WebCore/platform/gtk/po/ru.mo' failed
make[1]: *** [Source/WebCore/platform/gtk/po/ru.mo] Error 1

т.е. похоже, беда с правилом для обработки ru.po (без этого правила msgfmt вполне съедает этот файл).

Есть варианты, как с этим бороться?

 ,

Eddy_Em
()

gentoo, AUTOCLEAN=«no», а хочется «yes»

Продолжу флуд.

Итак, вчера я опять «поломал» свою генту: сначала пытался обновить ее (на работе в течение суток компилялся world, домой забрал бинарники, поставил полное обновление, поймал поломку системы). Потом опять загрузился с диска бубунты, в очередной раз развернул поверху stage3, запустил обновление system. Потом сдуру сделал AUTOCLEAN="no" и поставил emerge -uvDNK world, который начал удалять как бы установленные пакеты из stage3, которые на деле уже были заменены нормальными. В итоге опять был удален glibc и мне снова пришлось распаковывать stage3 (благо, хватило ума не перезагружаться, а делать все в бубунтовском чруте), возвращать AUTOCLEAN="no" и опять запускать обновление «мира».

Внимание, вопрос: как в этой чертовой генте хотя бы отключить матюки emerge на то, что у меня в make.conf указано AUTOCLEAN=«no»?

 ,

Eddy_Em
()

RSS подписка на новые темы