Puncte:1

Deschideți portul serial fără privilegii de root pe Ubuntu (reguli udev)

drapel um

Urmam acest tutorial pentru a configura accesul la portul serial al camerei Flir Boson din spațiul utilizatorului:

https://www.forecr.io/blogs/connectivity/how-to-integrate-flir-boson-thermal-camera-to-nvidia-jetson-modules

Camera se instalează ca /dev/ttyACM0 iar în tutorial există un .reguli fișierul pe care ar trebui să îl descărcați și să îl copiați în: /etc/udev/rules.d/. Și apoi reporniți.

Acesta este conținutul fișierului:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="09cb", OWNER="nvidia", MODE="0777", GROUP="nvidia"

Dar nu merge pentru mine. Chiar și după repornire, aplicația mea încă necesită sudo pentru a putea comunica cu camera.

Acum mi se pare că tutorialul presupune că aveți un anumit nume de utilizator, în acest caz eventual „nvidia”. Așa că am încercat și să schimb OWNER cu numele meu de utilizator actual, dar nici asta nu ajută.

O parte a problemei poate fi că nu înțeleg exact pentru ce sunt câmpurile OWNER și GROUP, doar presupun. Bineînțeles că am încercat să caut pe Google asta, dar dintr-un motiv oarecare, evident, nu pot formula corect interogarea.

Acesta este nVidia Jetson Xavier NX cu JetpackSDK 4.6, care este de fapt Ubuntu 18.04.

Mulțumiri!

drapel ru
Elementele „Proprietar” și „Grup” sunt pentru a determina utilizatorul de pe sistem care deține dispozitivul. Nu puteți accesa camera, da? Fără regulile „udev” în vigoare, reporniți și conectați camera. Ce înseamnă Afișează `ls -al /dev/ttyACM0`? Acest lucru ne va ajuta să identificăm grupurile la care să adăugați utilizatorul pentru a accesa dispozitivul.
drapel um
Bună, se va tipări următoarele: `crw-rw---- 1 root dialout 166, 0 pro 2 17:58 /dev/ttyACM0` De asemenea, nu sunt sigur la ce anume vrei să spui prin întrebarea dacă pot pentru a accesa camera. Alimentarea camerei funcționează bine, dar nu pentru asta este ttyACM0. Este un port serial care poate fi folosit pentru a trimite unele comenzi de control, cum ar fi schimbarea modurilor de culoare, luminozitate, interval de focalizare automată și lucruri de genul acesta.
drapel ru
nu contează ce este, ceea ce contează este acel grup de „dialout”. Și este foarte ușor să te adaugi în acel grup.
Puncte:1
drapel ru

Fișierul dvs. de reguli modifică utilizatorul și grupul la utilizatorul și grupul inexistent nvidia - acest lucru nu va rezolva problema dvs., de fapt, pur și simplu nu va funcționa, deoarece utilizatorul și grupul nvidia nu este un grup implicit și utilizatorul dvs. nu este în el. De asemenea, nu ar trebui să vă setați prizele la 777 permisiuni - din același motiv nu le dați fișierelor (vezi acest post referitor la motivul pentru care nu ar trebui să dai 777 la /var/www pentru preocupări similare de securitate). Există controale suplimentare de acces la dispozitive ca parte a regulilor de izolare AppArmor și pentru diferite aplicații, pe care nu le puteți depăși ca utilizator standard. Motiv pentru care apelare telefonică grupul există pentru da acces la acele dispozitive.

Tutorialul nVidia este probabil pentru alt sistem sau este învechit - nu ar trebui să fie nevoie utilizare regulile lor, în schimb oferiți-vă acces cu apelare telefonică.

Când lucrați cu privilegii la nivel de utilizator, dispozitivele speciale, cum ar fi comunicațiile cu port serial, necesită privilegii suplimentare. Acestea sunt acordate de către apelare telefonică grup (pentru dispozitive precum modemuri dialup, adaptoare seriale USB etc.)

Pur și simplu adăugați grupul dvs. la apelare telefonică grupați, reporniți și veți avea acces. Utilizați această comandă pe linia de comandă:

sudo usermod -a -G dialout $USER

A inlocui $USER cu numele de utilizator pe computer, apoi, atunci când reporniți și vă reconectați la sesiune, veți avea acces la acel dispozitiv și la alte dispozitive. Porturile de comunicație seriale necesită apelare telefonică permisiuni, în care este ușor să vă puneți.

Acesta ar trebui să fie tot ce trebuie să faceți dvs. sau orice alt utilizator pentru a accesa dispozitivul. Ar trebui să lăsați permisiunile implicite în pace, cu excepția cazului în care aveți un caz de utilizare foarte specific nu specificat în întrebarea dvs.

drapel um
Acest lucru a rezolvat într-adevăr problema. Am încercat asta chiar înainte de a scrie aici, dar problema a fost că, în combinație cu acel fișier `.rules`, nu ar funcționa. Vreo explicație pentru asta? Oricum, de ce s-a deranjat acel tutorial cu acele `.rules`?
drapel ru
@Aros fișierul Rules dictează reguli alternative pentru configurarea permisiunilor de fișiere pe dispozitive. Prin adăugarea regulilor, ați schimbat utilizatorul și grupul în `nvidia`, care (1) nu este un grup implicit și (2) utilizatorul dvs. nu face parte. Utilizatorul și grupul trebuie să fie utilizatorul și grupul care are * acces* la dispozitiv. Permisiunile implicite sunt de citire/scriere pentru fișierul socket al dispozitivului pentru proprietarul și grupul fișierului reprezentativ - ați putea să-l faceți utilizator și grup sau pur și simplu să lăsați valorile implicite și să vă acordați apel. Dacă utilizați un fișier de reguli, acesta *schimbă* valorile implicite.
drapel ru
Acesta este *de ce* v-am cerut să `ls` fără fișierul de reguli, pentru că nu *aveți nevoie* să modificați permisiunile pe fișierul dispozitiv reprezentativ - trebuie pur și simplu să vă acordați permisiuni de acces. Același lucru pentru orice alt utilizator de pe sistem, chiar dacă este un utilizator de sistem. Numai **în cazuri extrem de rare** trebuie să aveți o regulă personalizată.
drapel um
Sclipitor. Îţi mulţumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.