localhost:2947 engedélyezése júzereknek is [megoldva]

Fórumok

Sziasztok.

Adott egy antenna, amin van egy soros-usb átalakító, végén egy usb dugóval.
Ezt a dugót beteszem a laptop egyik nyílásába, mindig egy bizonyos helyre.
lsusb rendben, soros eszköz látványosan bent van, udev generál nekem egy /dev/ttyUSB0 cuccost.
Elindítok egy gpsd nevű démont, ami annyit tesz, hogy a már áram alatt lévő antennából érkező jeleket localhost 2947-es (TCP) porton keresztül küldi nekem. (gpsd-t rootként kell indítanom mindig.)

A gpsd szabványos NMEA-mondatokat küld, melyek GPS adatok. Ezeket lehet megetetni a kliensprogramokkal, melyek többsége userként (tehát nem rootként) látják is a localhost:2947-et.
Egy kliensprogram viszont csak akkor veszi a gpsd által küldött adatokat, ha rootként indítom.

Röviden:

az a kérdésem, hogy a 2947-es portot a /dev/ttyUSB0-val együtt hogyan lehet "engedélyezni" usereknek is (ha nem mindig szeretek rootként tevékenykedni)?
Szégyellem, hogy pont ezt nem tudom...

Megjegyzés:

A tűzfalszkriptem idevágó részletei:

GPS_IN_PORT="2947"
IF_WLAN=`cat /wlan`

$IPT -A INPUT -i $IF_WLAN -p tcp -m multiport --dports $GPS_IN_PORT -m state --state NEW -j ACCEPT;
$IPT -A INPUT -i $IF_WLAN -p udp -m multiport --dports $GPS_IN_PORT -m state --state NEW -j ACCEPT;

(a dolgok a tűzfal letiltásakor sem mennek...)

Hozzászólások

Nem használtam még gpsd-t, így próbálom az általános oldalról megközelíteni.

"Elindítok egy gpsd nevű démont, ami annyit tesz, hogy a már áram alatt lévő antennából érkező jeleket localhost 2947-es (TCP) porton keresztül küldi nekem. (gpsd-t rootként kell indítanom mindig.)"
Pontosítva: az USB-s vevőről származó adatokat a gpsd veszi, valamint a gpsd hallgat a TCP/2947-en, erre kapcsolódhat a kliens.

"a 2947-es portot a /dev/ttyUSB0-val együtt hogyan lehet "engedélyezni" usereknek is (ha nem mindig szeretek rootként tevékenykedni)?"
A /dev/ttyUSB0-t a gpsd-t futtató user számára kell elérhetővé tenni. A TCP/2947-et pedig alapesetben elérheti a kliens nem rootként is: "látják is a localhost:2947-et".

"Egy kliensprogram viszont csak akkor veszi a gpsd által küldött adatokat, ha rootként indítom."
Ez konkrétan melyik kliensprogram? Hibaüzenet van? A logokban keletkezik valami erről? Van debug (verbose, detailed stb.) módja? Ahogy írod is, más klienssel működik, csak ezzel az egy klienssel nem. Így nagyon valószínű, hogy vagy ezzel a programmal, vagy a beállításával lesz gond. De akár egy telnettel is megtekintheted, hogy a szerveroldal jónak tűnik-e.

Megjegyzés: a tűzfalrészletből kiindulva Linux alapú a rendszered, ebből adódóan jobb lenne a Linux kategóriába, mintsem a UNIX alá sorolni ezt a topikot.

Kipróbáljak valami ilyet?

chown -R a:users /dev/ttyUSB0
("a" névre hallgat a júzer, mivel nem szeretek gombokat nyomogatni...)

Ez a kliens:
http://opencpn.org/ocpn

Logrészlet:

---júzerként:
17:58:20 CET: NMEA Data Source is....Serial:/dev/ttyUSB0
17:58:20 CET: GPS Watchdog Timeout is: 6 sec.
17:58:21 CET: NMEA input device open failed: /dev/ttyUSB0

---rútként:
21:22:59 CET: NMEA Data Source is....Serial:/dev/ttyUSB0
..és tovább fut a log hibaüzenet nélkül.

Debug mód tudtommal nincs, de a log annyira fejlett, hogy ihaj.

Beállításoknál semmi különleges lehetőséget nem láttam.
Valamikor kipróbálom a fentebb említettet, de ez a ttyUSB0 nem egy állandó állomány, csak akkor jön létre, ha betolok valamit az USB aljzatba...

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Na most itt valami nem kerek.

"NMEA Data Source is....Serial:/dev/ttyUSB0"
Ha jól értem, ez az OpenCPN logja. Miért közvetlenül az USB-s vevőt akarja elérni, amikor azt írtad, hogy a gpsd is fut? A vevőt a gpsd-nek kellene kezelnie a ttyUSB0-n keresztül, az OpenCPN-ben pedig a gpsd által szolgáltatott TCP/2947 portot kellene beállítani adatforrásként, nem az USB-t. Nem jól gondolom?

A dokumentációban a Linux fejezetben le is írják a két különböző (gpsd-s és a direkt kezeléses) változatot is. Ahogy látható, gpsd-s esetben a forrás "Network GPSD" vagy "Network LIBGPS" névre hallgat, ezt állítsd be.

Mindkettőnél ugyanaz, már kísérleteztem vele. Illetve összesen 3 lehetőség van a beállításoknál... Kár, hogy pont most nincs nálam az antenna. Teszek még egy kísérletet, ha hazajutok, kezd összeállni valami kép, a program fórumja is tele van néhol mg bugokkal is

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Ha a gpsd mindig root jogokkal fut, és minden kliens program, kivéve egyet, működik nem root jogokkal, akkor ott szerintem nincs gond a localhost:2947-es portra való csatlakozással. Ha gond lenne akkor egyik program sem menne.
Mit történik, ha azt a programot ami nem akar működni a gépen, egy másik gépen indítod el és próbálsz kapcsolódni az antennás gépre?

Network Libgps-beállítással megy a dolog, de azt hiszem találtam a programon belül egy bugot, melyet majd az alkotók felé közlök.
Azért nem észleltem hogy megy a GPS antennából jövő jel fogadása, mert
1.
Hideg indítással később talál az antenna megfelelő számú műholdat
2.
Ha talál, csak akkor jelenik meg a pointer a kliensprogramon, ha megfelelően kicsi a hibaháromszög
3.
Valamiért az NMEA mondatokat listázó lis ablakban újabban nem jelennek meg az NMEA mondatok, ez pedig pont betudható annak, hogy a legújabb gpsd monitorüzemmódja más paraméteres indítást igényel.

Készítettem egyik fenti javaslatra egy linket, melyre kiadtam user-jogokat, a helyzet ugyanaz. Mondjuk ez eszembe juthatott volna nekem is...

Probléma megoldott, köszönöm a sugallatot, a többit a megfelelő helyre továbbítom

Különben is: BÚÉK :)

---
--- A gond akkor van, ha látszólag minden működik. ---
---