Cum am răsturnat imaginea de pe o cameră web din linux

Nu este nici un secret faptul că suportul multimedia în Linux a progresat foarte mult în ultima vreme, dar există încă multe dispozitive care funcționează incorect. Se întâmplă ca un bug agățat rapoarte de erori de luni de zile și nimeni nu acordă atenție la ea, și, de asemenea, se întâmplă că totul este decis să config ton fin: dezvoltatorii de conducător auto, în general, cred că, dacă problema se corectează cu ajutorul setărilor vicleni, nu este o problemă. Și în ceva sunt de acord cu ei - Unix-way.

Esența problemei


În ziua următoare, am intrat în laptopul ASUS K52D și am instalat Arch Linux pe el. În opinia mea, aceasta este cea mai bună alegere pentru cei cărora le place KISS și infuriează managerul de rețea. Da, și ce diferență - mediul și nucleul sunt la fel peste tot. Cu toate acestea, am câștigat absolut totul de la cutie, dar imaginea de pe camera web a fost transformată cu susul în jos și orizontală (verificată în Skype, mplayer și Cheese). Aparatul foto de la Sonix Technology pe magistrala USB și, prin urmare, utilizează un driver UVC. Apropo, pe multe laptop-uri de la ASUS, Dell, Lenovo, Acer, HP, Fujitsu etc. o cameră este folosită pe magistrala USB și, prin urmare, toate vor folosi driverul USB Video Class Class. Din fericire, el a fost în centrul de mult timp.

Soluții găsite


Am găsit driverul în lista dispozitivelor acceptate. că am două opțiuni: fie să transforme laptopul de fiecare dată, fie să reconstruiesc stratul V4L2, care va transforma imaginea programat. Citez: "Pentru aplicații care nu utilizează libv4l, încercați să țineți computerul cu susul în jos." Un pic din el a apelat la libv4l. Sa dovedit că există oameni care folosesc chiar și xrandr -o! Există patch-uri pentru UVC, dar mi sa părut nejustificat, pentru că avem atât un driver de lucru, cât și o aplicație pentru utilizatori. Orice altceva despre setarea Motley kopipasta v4l2ucp (v4l2 utilitate lipicioasă-setare) și preîncărca v4l1compat.so despre bibliotecă înainte de începerea aplicației. După cum înțeleg, aceasta este singura soluție frumoasă în cazul șoferului nostru.

libv4l, v4l2ucp


Aici totul este simplu. Este necesar să instalați pachetele cu libv4l și cu v4l2ucp. După instalare, ar trebui să aveți binarele v4l2ucp. v4l2ctrl și biblioteca v4l1compat.so. Dacă acest lucru este disponibil, atunci ați instalat pachetele necesare. Dacă nu este clar unde este biblioteca, ea poate fi găsită cu ușurință de către:

găsi / usr / lib -name 'v4l *'

În Arch Linux, el se află în /usr/lib/libv4l/v4l1compat.so.

Apoi, trebuie să rulați v4l2ucp și să puneți căpușe în fața vflip / hflip și puteți juca cu strălucire, contrast și alte lucruri interesante. Apoi, puteți începe, de exemplu, Skype-ul dvs. preferat cu următorul script:

#! / bin / bash
export LIBV4LCONTROL_FLAGS = 1
LD_PRELOAD = / usr / lib / libv4l / v4l1compat.so / usr / bin / skype

LIBV4LCONTROL_FLAGS - titlul este clar, voi adăuga doar că această opțiune afectează valoarea și vflip hflip, iar dezvoltatorii scrie că «sunt doar pentru scopuri de depanare». Conform observațiilor mele, mi-am dat seama că valoarea sa ar trebui să fie egală cu 1, astfel încât opțiunile flip din v4l2ucp să fie corect tratate. În timp ce valoarea de 3 am îndeplinit vflip fără v4l2ucp, dar o astfel de decizie nu-mi plăcea - în v4l2ucp există o mulțime de alte opțiuni pe care mulți oameni îl vor folosi. Pentru a juca cu steaguri este mult mai puțin convenabil în cazul unei camere.

Și pentru ca toate acestea să funcționeze după repornire, trebuie să salvați setările curente într-un fișier pe care îl vom încărca înainte de a porni aplicația.

Și script-ul nostru poate fi actualizat:

/ v4l2_settings
export LIBV4LCONTROL_FLAGS = 1
LD_PRELOAD = / usr / lib / libv4l / v4l1compat.so / usr / bin / skype

Totul e gata. Această opțiune ar trebui să ajute la multe camere UVC "inversate". Și într-adevăr cu orice defecte de orientare, culoare, sensibilitate.

În concluzie, despre problemele


O problemă obișnuită cu această soluție este lipsa opțiunilor vflip / hflip în v4l2ucp. Pe forumuri, am văzut în mod repetat că unii nu au aceste opțiuni din motive necunoscute, deși camera este susținută și nu există informații de la dezvoltatori.
De asemenea, nu am avut aceste opțiuni imediat. Cazul a dovedit că libv4l ia informații despre cameră prin intermediul DMI. Și nu prin codul obișnuit dmidecode și prin sysfs! Imediat sugerează configurația greșită a kernel-ului.

Prin urmare, în kernel, cu excepția

CONFIG_DMIID = y, adică Firmware Drivers -> Exportă identificarea DMI prin sysfs în spațiul utilizatorilor.

De fapt, în Arch Linux această opțiune este activată în mod implicit și am folosit config-ul meu vechi.

Cum am răsturnat imaginea de pe o cameră web din linux

Laptop: Sunet în căști și / sau difuzoare
M-am așezat pe Arch Linux de ceva timp și am vrut să verific ce simte vechiul Ubuntu. Mai ales la Gnome Shell, obișnuită, astfel încât Unitatea nu va fi o noutate, deși diferența este evidentă. M-am confruntat cu faptul că în mod implicit am avut sunet redat în ambele canale - în difuzoare și căști. Googling, am observat că răspunsurile au fost doar cu

Cum am răsturnat imaginea de pe o cameră web din linux

Laptop: Sunet în căști și / sau difuzoare
M-am așezat pe Arch Linux de ceva timp și am vrut să verific ce simte vechiul Ubuntu. Mai ales pentru Gnome Shell, obișnuită, astfel încât Unitatea nu va fi o noutate, deși diferența este evidentă. M-am confruntat cu faptul că în mod implicit am avut sunet redat în ambele canale - în difuzoare și căști. Googling, am observat că răspunsurile au fost doar cu

Cum am răsturnat imaginea de pe o cameră web din linux

GrSecurity / PaX: nivel de securitate preinstalat
Este vorba de configurarea GrSecurity / PaX (am dat link-uri în limba rusă, dar limba engleză este mult mai informativă) în kernel-ul Linux. Totul este descris valabil pentru Hardened Gentoo (kernel 3.1.5), dar se aplică la orice distribuție (nu vor fi pre-instalat Gentoo-shnyh nivel de securitate stație de lucru / server / virtualizare, dar în descrierea mea din ele în acest articol

Cum am răsturnat imaginea de pe o cameră web din linux

Importarea codului din Android în nucleul principal al Linux
În cadrul programului Linux Foundation CE Workgroup, a fost organizat un proiect pentru a returna codul de program de la sistemul de operare Android la firul standard al liniei de kernel Linux. Acesta este un proiect foarte util, deoarece dezvoltatorii de sisteme de operare mobile au făcut niște patch-uri care pot fi utile pentru dispozitive mobile Linux cum ar fi netbook-urile și

Cum am răsturnat imaginea de pe o cameră web din linux

Instalarea SMS-ului Linux (Slackware) pe eBox-2300SX
M-am uitat la eBox-2300SX pentru o vreme și am încercat-o ca un simplu server de acasă. Mai ales că am citit pe Habré subiectul Ideal NAS? Un alt punct de vedere, eBox-2300SX. Ironback pare destul de interesant, dar se potrivește ca un server HTTP și Jabber? Cred că toată lumea poate decide singură. Și sunt doar