Bekijk de volledige versie : WL-500gP WI-FI и GPS координаты
Собственно subj.
На инострано-язычной части форума его тоже (безрезультатно) разыскивали (ncurses-dev).
gpsd configure сообщает:
"configure: error: I see an ncurses library but no header; you should install the development package"
Может быть кто из разработчиков подскажет, где сие водится?
А то Garmin 18x LVC уже приехал, а тот gpsd, что в правильном репозитории работает 10 (десять) секунд после чего перегружает роутер...
Собственно, кто ищет, тот всегда найдёт.
Выдернул каталог include из ncurses-devel_5.6-6 от FC, залил на девайс и всё собралось. После выкидывания ненужных драйверов размер gpsd сотавил 4.5 KB.
Всё бы хорошо, но падение с перезагрузкой через 10 sec. никто не отменил :-(
При запуске :> gpsd -n -N -D 5 /dev/usb/tts/0 лог доходит до первого получения $GPGGA (после автоопределения параметров соединения) и всё, кирдык...
Проверил на PC с Mandrake 10.0 в той же конфигурации gpsd и железа (Garmin 18x LVC + USB2Serial на PL2303) - всё работает.
Отрывание ноги с PPS для "облегчения жизни" софта/девайса ничего не изменило.
Может быть кто-то из экспертов подскажет, что я не так делаю?
Кто озадачивался? Интересует функционал GPS контролера...
Я сейчас прикручиваю Garmin.
Спрашивай, если знаю - отвечу.
Чего-то никак не могу понять. Пишу простой сервер на C, для GPS loger'а, так вот нужно отсылать каждую секунду данные на ip:port (на роутер). Поставил все, что нужно для сборки софта на роутере, вот самый простой пример серверной части:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
const int PORT = (мой порт),
BUF_SIZE = 1024;
const unsigned long int IP = INADDR_ANY;
int main()
{
int sock, listener;
struct sockaddr_in addr;
char buf[BUF_SIZE];
int bytes_read;
printf("Create socket-listener - ");
listener = socket(AF_INET, SOCK_STREAM, 0);
if(listener < 0){
printf("FAILED\n");
return -1;
}
else printf("OK\n");
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = htonl(IP);
printf("Bind address to socket-listener - ");
if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0){
printf("FAILED\n");
close(listener);
return -1;
}
else printf("OK\n");
printf("Listen for connections - ");
if(listen(listener, 3) < 0){
printf("FAILED\n");
close(listener);
return -1;
}
else printf("OK\n");
while(sock = accept(listener, NULL, NULL)){
printf("Got new connection\n");
while(bytes_read = recv(sock, buf, BUF_SIZE, 0)){
printf(buf);
}
printf("Close connection\n");
close(sock);
}
return 0;
}
Итог клиент подключается и передаёт всё замечательно, но только из локалки (клиент написан и под Win и под Linux). (мой порт) - конечно же открыл в файрволе, пробовал даже пропись его в web морде с форвардом - увы, итог нулевой.
1. По поводу кода:
а)
while(sock = accept(listener, NULL, NULL))
...
while(bytes_read = recv(sock, buf, BUF_SIZE, 0))
лучше заменить на
while((sock = accept(listener, NULL, NULL)) >= 0)
...
while((bytes_read = recv(sock, buf, BUF_SIZE, 0)) > 0)
б)
printf(buf);
Лучше так не делайте. Встретится в буфере последовательность %s - и segmentation fault обеспечен. Хотите вывести на стандартный вывод - используйте fwrite(buf, 1, bytes_read, stdout).
2. По поводу порта: покажите вывод команды iptables-save на роутере и укажите какой из портов - (ваш порт).
theMIROn
03-07-2009, 06:45
printf(buf);
Лучше так не делайте. Встретится в буфере последовательность %s - и segmentation fault обеспечен. Хотите вывести на стандартный вывод - используйте fwrite(buf, 1, bytes_read, stdout).
вот так еще делается
printf("%s",buf)
Power, theMIROn, по первому пункту спасибо переделаю, а по второму
iptables-save
# Generated by iptables-save v1.3.8 on Fri Jul 3 12:08:38 2009
*nat
:PREROUTING ACCEPT [117532:12257770]
:POSTROUTING ACCEPT [56586:4550325]
:OUTPUT ACCEPT [9196:588820]
:VSERVER - [0:0]
-A PREROUTING -d 89.252.88.61 -j VSERVER
-A POSTROUTING -s ! 89.252.88.61 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.0/255.255.255.0 -o br0 -j SNAT --to-source 192.168.0.1
-A VSERVER -p udp -m udp --dport 56354 -j DNAT --to-destination 192.168.0.202:56354
-A VSERVER -p udp -m udp --dport 53981 -j DNAT --to-destination 192.168.0.202:53980
-A VSERVER -p udp -m udp --dport 63622 -j DNAT --to-destination 192.168.0.10:63622
-A VSERVER -p tcp -m tcp --dport 53981 -j DNAT --to-destination 192.168.0.202:53980
-A VSERVER -p tcp -m tcp --dport 3724 -j DNAT --to-destination 192.168.96.1:3724
-A VSERVER -p udp -m udp --dport 34622 -j DNAT --to-destination 192.168.0.101:34622
-A VSERVER -p tcp -m tcp --dport 34622 -j DNAT --to-destination 192.168.0.101:34622
-A VSERVER -p udp -m udp --dport 53980 -j DNAT --to-destination 192.168.0.10:53980
-A VSERVER -p tcp -m tcp --dport 53980 -j DNAT --to-destination 192.168.0.10:53980-0
COMMIT
# Completed on Fri Jul 3 12:08:38 2009
# Generated by iptables-save v1.3.8 on Fri Jul 3 12:08:38 2009
*mangle
:PREROUTING ACCEPT [106239951:74973262815]
:INPUT ACCEPT [3019270:793834335]
:FORWARD ACCEPT [102454009:74085898892]
:OUTPUT ACCEPT [2438273:663905792]
:POSTROUTING ACCEPT [105184588:74857941157]
COMMIT
# Completed on Fri Jul 3 12:08:38 2009
# Generated by iptables-save v1.3.8 on Fri Jul 3 12:08:38 2009
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [24611:2058263]
:OUTPUT ACCEPT [451386:130722435]
:BRUTE - [0:0]
:MACS - [0:0]
:SECURITY - [0:0]
:logaccept - [0:0]
:logdrop - [0:0]
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -m state --state NEW -j ACCEPT
-A INPUT -i br0 -m state --state NEW -j ACCEPT
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -j DROP
-A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A FORWARD -d 192.168.0.10 -p tcp -m tcp --dport 53980 -j ACCEPT
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ! br0 -o ppp0 -j DROP
-A FORWARD -i ! br0 -o vlan2 -j DROP
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
-A FORWARD -o br0 -j DROP
-A SECURITY -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j RETURN
-A SECURITY -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j RETURN
-A SECURITY -p udp -m limit --limit 5/sec -j RETURN
-A SECURITY -p icmp -m limit --limit 5/sec -j RETURN
-A SECURITY -j DROP
-A logaccept -m state --state NEW -j LOG --log-prefix "ACCEPT " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logaccept -j ACCEPT
-A logdrop -m state --state NEW -j LOG --log-prefix "DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logdrop -j DROP
COMMIT
# Completed on Fri Jul 3 12:08:38 2009
Порт 3724
sauron093
03-07-2009, 14:58
-A VSERVER -p tcp -m tcp --dport 3724 -j DNAT --to-destination 192.168.96.1:3724
хм. а зачем у вас проброс портов сделан? у вас серверный софт не на роутере стоит?
если порт открыт должно быть что-то типа
-A INPUT -p tcp -m tcp --dport 3724 -j ACCEPT
lexen,
Как правильно сказал sauron093, если у вас сервер стоит на самом роутере, то port forwarding вам не поможет - порт нужно открыть в цепочке INPUT. Обычно для этого добавляют такое в post-firewall
iptables -P INPUT DROP
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp -m tcp --dport 3724 --syn -j ACCEPT
вот так еще делается
printf("%s",buf)
Вообще - да, но в данном случае этот код не учитывает тот факт, что длина строки (номер первого встретившегося нулевого байта) может отличаться от заполненной длины буфера (bytes_read), причём в любую сторону.
sauron093, Power, в web gui port forwarding пуст, есть строчка в post-firewall
iptables -A INPUT -p all --syn --dport 3724 -j ACCEPT
более ничего нет
в web gui port forwarding пуст...
Значит, UPnP балуется, выключите его от греха подальше.
...есть строчка в post-firewall
iptables -A INPUT -p all --syn --dport 3724 -j ACCEPT
более ничего нет
Эта строчка с ошибкой (и даже если бы была без ошибки, всё равно не помогла). Сделайте так, как я написал выше.
И кстати, вы так и не уточнили: этот сервер у вас на роутере стоит? И порт нужно на роутере открыть?
можноли прописать в роутере его координаты gps ?
Можно.. в текстовом файле... :D
Нет в нем ГПС приемника.
Можно.. в текстовом файле...
Нет в нем ГПС приемника.
Интересный вопрос... Ясное дело нет. И не надо. Он же не перемещается. Их надо как-то задать, чтобы он вещал их.
цитата CNews
...в программе имеется база данных, в которой содержится информация о более чем 26 тысячах точек доступа, установленных в обеих странах. С ее помощью по сигналам от трех хот-спотов, находящихся в пределах досягаемости устройства, методом триангуляции определяется местоположение.
Интересный вопрос... Ясное дело нет. И не надо. Он же не
перемещается. Их надо как-то задать, чтобы он вещал их.
Роутер может получать координаты от приёмника GPS или навигатора
по блютузу и передавать их в SSID по Wi-Fi или по инету/почте/SMS ... ;)
вообщето я имел в виду следующее.
есть прога для кпк которая ищет wi-fi точки доступа и если точка передает в эфир свое место положения, то на кпк с gps приемником эта прога показывает такую wi-fi точку на радаре - ее местоположение относительно вас. тоесть эдакий сканер точек доступа
Какая прога ? ;) Так надо посмотреть, что передают другие точки
доступа в SSID, и забить тоже самое со своими координатами ... :)
прога wi-fi fofum
http://www.aspecto-software.com/rw/applications/wififofum/index.html
dennypsp
04-02-2011, 21:04
Всем привет...После установки торрента на роутер и безупречной работы около 1 года, решил поставить туда же GPS сервер OpenGTS. По всем правилам по идее должен работать, но пока что-то не понимаю , уж много компонентов надо ему ... Вообще такой вопрос будет ли работать или нет? Может и не париться и пользоваться другими бесплатными...Но всегда хочется чего-то своего :)
принцип работы OpenGTS - GPS Треккер отсылает каждые 30 сек координаты по SMS - GPRS на сервер, затем создается маршрут треккера на гарте гугла..И можно отслеживать перемещение авто людей и т.д. у кого есть GPS треккер.Т.к. программа работает также на линуксе то прикинул будет ли она работать на роутере.
Никто не пробовал ее установить?
http://www.opengts.org/TopMenu.jpeg
http://www.opengts.org/TrackMap.jpeg
Демо вход на странице производитея OpenGPS - http://track.opengts.org/track/Track
Сайт производителя - http://www.opengts.org/ , программа абсолютно бесплатна - поэтому есть интерес.
Вопрос к гуру: насколько мне известно, существует возможность прописать в рутер его GPS координаты, чтобы всякие умные устройства, типа коммуникаторов и т.п. при работе с ним через WiFi использовали эти координаты, вместо GPS (актуально для помещений)
Существует ли возможность в этой прошивке указать координаты? Если да, то как?
Вопрос к гуру: насколько мне известно, существует возможность прописать в рутер его GPS координаты
Откуда Вам такое известно?!
Откуда Вам такое известно?!
Для России, хотя скорее москвы это сервис http://altergeo.ru/, по маку хот-спота определяет местонахождение абонента, клиент есть под все мобильные платформы )
А тут про геолокация для чайников - http://www.xakep.ru/post/48378/ ))
А тут про геолокация для чайников - http://www.xakep.ru/post/48378/ ))
"Для чайников" я бы советовал внимательнее читать исходное сообщение, там было сказано: "существует возможность прописать в рутер его GPS координаты".
Думаю, для чего выделение - понятно?
А про GeoIP мне, поверьте, не нужно рассказывать. Однако, связь с первоначальным вопросом - косвенная. В роутер ничего прописывать не надо. GeoIP базы Google и ей подобные (http://samy.pl/mapxss/) используют "утекание" связки координат и MAC с коммуникаторов под управлением Android + нашумевшее сканирование Wi-Fi сетей со своих автомобилей.