226

(17 odpowiedzi, napisanych Oprogramowanie / Software)

Witam 

być może kiedyś na moim tplinku 3600  z gargusiem 1.6.2.2    zrobiłem opkg upgrade na paczce kmod-mac80211

i to było  tak dawno  i nie pamiętam czy od tego momentu restartowałem router  nie mniej jednak  wczoraj wywaliło mi korki
i od tego momentu:

root@Gargoyle-cyniu:~# wifi
'radio1' is disabled
command failed: No buffer space available (-132)
command failed: No buffer space available (-132)
Configuration file: /var/run/hostapd-phy0.conf
nl80211 driver initialization failed.
hostapd_free_hapd_data: Interface wlan0 wasn't started
Failed to start hostapd for phy0
'radio1' is disabled
root@Gargoyle-cyniu:~#

root@Gargoyle-cyniu:~# cat /etc/config/wireless
config wifi-device  radio0
        option type     mac80211
        option channel  36
        option hwmode   11a
        option path     'platform/ar934x_wmac'
        # REMOVE THIS LINE TO ENABLE WIFI:
        #option disabled 1
config wifi-iface
        option device   radio0
        option network  lan
        option mode     ap
        option ssid     OpenWrt
        option encryption none
config wifi-device  radio1
        option path     'pci0000:00/0000:00:00.0'
        option type     mac80211
        option channel  36
        option hwmode   11a
        option path     'pci0000:00/0000:00:00.0'

        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 1

config wifi-iface
        option device   radio1
        option network  lan
        option mode     ap
        option ssid     OpenWrt
        option encryption none
root@Gargoyle-cyniu:~#


to co znalazłem  w necie nie pomaga


jakieś pomysły ?

a fakt nie pomyślałem    dzięki za info

Cześć

szybkie pytanie     mam tp linka   3600   i podpięte raspberry pi 2 do niego

czy ktoś to testował  i ma doświadczenie  chodzi o to czy lepiej podpiąć dysk usb  do routera   czy do maliny   tak  by  był widoczny w sieci LAN

coś musiałeś pomieszać   u mnie kamera jest na porcie 83   i  mogę dostać się do niej pod  localhost:83 (z routera)     local_IP_kamery:83    jak i wan_IP_routera:83

działa Ci w ogóle opcja  192.168.XXX.XXX:8080   ?

a pamiętasz gdzie dokładnie gdzie  są ?  oszczędziło by mi to szukania

admin2 napisał/a:

Jeszcze jedno, da się z poziomu C sterować nad modułem kernela od I2C, czy raczej pozostaje gadanie poprzez system()?

Właśnie nad tym się zastanawiam,

wiem że z poziomu c można pisać do rejestru   z liniami GPIO  i ustawiać  je  w stan HIGH  lub LOW  oraz czytać ich stan ,    czyli da się komunikować przez I2C   SPI , 1-Wire  pytanie  tylko jak   i czy to będzie przeszkadzać  jak nasz wątek odpowiedzialny  za transmisje np I2C  zostanie w połowie ramki  przerwany przez planistę a czas procesora przyznany  innemu wątkowi

Cześć

nigdy nie byłem przekonany do ustawienia linii GPIO  ( np. LED)  operacjami na pliku. szukając informacji jak ustawiać linie przez operacje na rejestrze w openwrt natrafiłem  na tą stronę  Link  (od razu dodam że jest tam babol  jeśli chodzi o operacje na bitach ).

Posiadam TP-Link 3600   z procesorem AR9344   do którego znalazłem DS  http://cykey.ca/~cykey/airport/AR9344.pdf

naprawiłem funkcje  z poradnika,  sprawdziłem że dla mojego procesora adresy się zgadzają  ale block size jest większy

po zmianie powstały  funkcje które działają dobrze i bardzo szybko operują na liniach GPIO, niestety ten przykład  nie jest uniwersalny  lecz raczej tylko  dla procesora AR9344

#define GPIO_ADDR 0x18040000 // base address
#define GPIO_BLOCK 108 // memory block size

//#define LED_qos 15
#define OUT_PUT 1
#define IN_PUT  0
#define HIGH    1
#define LOW     0

volatile unsigned long *gpioAddress;

 

int gpioSetup()
{
    int  m_mfd;
    if ((m_mfd = open("/dev/mem", O_RDWR)) < 0)
    {
        return -1;
    }
    gpioAddress = (unsigned long*)mmap(NULL, GPIO_BLOCK, PROT_READ|PROT_WRITE, MAP_SHARED, m_mfd, GPIO_ADDR);
    close(m_mfd);

    if (gpioAddress == MAP_FAILED)
    {
        return -2;
    }

    return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////

void gpioDirection(int gpio, int direction)
{
    unsigned long value =   *(gpioAddress + 0); // obtain current settings

    if (direction == 1)
    {
        value &= ~(1 << gpio); // clear bit
    }
    else
    {
       value |= 1 << gpio; // set bit to 1
    }

    cout << " w value " << value <<endl;
    binary(value);
    cout << " po binrary " << endl;

    *(gpioAddress + 0) = value;
}
//////////////////////////////////////////////////////////////////////////////////////////////
inline  void gpioSet(int gpio, int value)
{
    if (value == 0)
    {
        *(gpioAddress + 3) |= (1 << gpio);
    }
    else
    {
        *(gpioAddress + 4) |= (1 << gpio);
    }
}

///////////////////////////////////////////////////


 inline int gpioRead(int gpio)
{
     unsigned long value = *(gpioAddress + 1);
     return ((value >> gpio) % 2);
}

jest kilka projektów na tej stronie do których można to wykorzystać,

domyślam się,  że jest jeszcze kilka innych sposobów jak to zrobić pod openWRT  bardziej uniwersalnych  więc gdyby ktoś chciał się  tym podzielić  to na pewno parę osób byłoby zainteresowanych.

Dodatkowo  gdyby ktoś miał datasheet do procesora  Atheros AR9132@400MHz   z TP-Link TL-WR1043ND to byłbym wdzięczny za udostępnienie.


PS  co w ogóle sądzicie o tym sposobie pracowania na  GPIO ?

233

(16 odpowiedzi, napisanych Oprogramowanie / Software)

musisz w skrypt wstawić warunek    który sprawdza jaka jest godzina   jak  nie mieści się w zadanym przedziale  to przerywa działanie skryptu

234

(4 odpowiedzi, napisanych Oprogramowanie / Software)

ech   kocham  to :

udało mi się zrobić program który używa libncurses  ale tyle kombinowałem ze nie wiem jak to zrobiłem big_smile

w Makefile  dodałem DEPENDS:=+libncurses   
a w Makefile w SRC  ..... $(LIBS)= -lncurses

i działa

235

(4 odpowiedzi, napisanych Oprogramowanie / Software)

ok bardzo głupio zadane pytanie tongue
ć
ok mam źródła  zassane przekompilowane  mogę sobie kompilować pojedyncze pakiety  ale  naszło mnie by wykorzystać bibliotekę ncurses   tylko  że hmyyy   nie wiem jak to zrobić żeby się kompilowało ?

muszę przekompilować jeszcze raz cale SDK  żeby  dodało tą bibliotekę ?

czy w mojej paczce wystarczy że dodam w makefile'u " DEPENDS:=+libstdcpp +libncurses "  ?

Cześć
czy może mi ktoś wyjaśnić:

jeżeli kompiluje swoją paczkę i chciałbym używać  biblioteki  libncurses to w zasadzie gdzie w drzewie katalogów powinna się ona znajdować w SDK ?

237

(0 odpowiedzi, napisanych Oprogramowanie / Software)

ma ktoś może przypadkiem zrobioną bibliotekę SFML   w wersji na openWRT ?

238

(1 odpowiedzi, napisanych Oprogramowanie / Software)

o dziwo używając  c++  new, delete  można alokować  i alokować

czy ktoś jest w stanie sprawdzić  u siebie   calloc  ()   i  new ?

miałem ten sam problem  ale pomogło  trzymanie authorized_keys w .ssh

ssh logowane bez hasła i zdalne wykonywanie echo

241

(1 odpowiedzi, napisanych Oprogramowanie / Software)

cześć
jak mogę sprawdzić  ile maksymalnie mogę zaalokować bajtów pamięci  ?
doświadczalnie to  sie udaje 
ptr=(int *) calloc(511, sizeof(int));

ale  to  już nie

ptr=(int *) calloc(512, sizeof(int));

ale może da się  to sprawdzić niedoświadczalnie ?

242

(6 odpowiedzi, napisanych Oprogramowanie / Software)

a host A  nie może Pingować   hosta B   i hosta C   i całego alfabetu hostów i łączyć  się  z tym  do którego ma najniższy ping ?

243

(8 odpowiedzi, napisanych Oprogramowanie / Software)

ok   ale muszę opanować  ten  gdb    puki co mam to z kodu lekko zmodyfikowanego

 przed while
                           iteracja 0
id watku 0
 watek wystartowal  1990817072
 taki watek 0
|Wiadomosc od klienta|:
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4   New connection from: 127.0.0.1:32911
                           iteracja 0
id watku 1990817072
                           iteracja 1
id watku 0
[New LWP 7708]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 7708]
0x7704c92c in ?? ()
(gdb) Quit
(gdb)

244

(8 odpowiedzi, napisanych Oprogramowanie / Software)

ok  mam taki fragment  kodu:

while( 1 )
    {
        bzero( & from, sizeof( from ) );
        usleep(100000);

        if(( gniazdo_clienta = accept( gniazdo,( struct sockaddr * ) & from, & len ) ) < 0 )
        {
            //perror("accept() ERROR");
            continue;
        }

        for (int licznik_klientow=0; licznik_klientow< MAX_CONNECTION; ++licznik_klientow)
        {
            std::cout << "                           iteracja "<<licznik_klientow<<std::endl;
            std::cout << "id watku "<< lista_watkow[licznik_klientow]<< std::endl;
 //std::cout <<  " stan watku " <<  pthread_detach( lista_watkow[licznik_klientow] )<< std::endl;

           if (  pthread_detach( lista_watkow[licznik_klientow] ) == ESRCH )

            {
                if ( licznik_klientow!=9)
                {
                    m_data.s_gniazdo_klienta=gniazdo_clienta;
                    m_data.from=from;


                    pthread_create (&lista_watkow[licznik_klientow], NULL,&Serve_connectivity_thread,&m_data);
                    std::cout << " watek wystartowal  "<< lista_watkow[licznik_klientow] << std::endl;
                    std::cout <<  " taki watek " <<  pthread_detach( lista_watkow[licznik_klientow] )<< std::endl;
                  
                    break;
                }
                else
                {
                    std::cout<<"za duzo kientow\n";
                }

            }


            // shutdown( gniazdo_clienta, SHUT_RDWR );
            //pthread_exit(NULL);
        }
    } // while

no i właśnie  w tym IF

  if (  pthread_detach( lista_watkow[licznik_klientow] ) == ESRCH )


jak  lista_watkow[licznik_klientow]   jest domyślnie  0   to wywala


ale teraz widzę  że nawet  jak jakiś  wątek  zakończył się  to  funkcja zwraca   EINVAL  zamiast  ESRCH

245

(8 odpowiedzi, napisanych Oprogramowanie / Software)

no i już wiem     kiedy  ten błąd,    jak wywołuje funkcje  a w argumencie  podaję  id wątku  równe 0,   na laptopie działa  ale na routerze wywala segmentation fault.

246

(5 odpowiedzi, napisanych Oprogramowanie / Software)

musisz mieć program który pobierze  obrazek JPG z kamerki ( zapewne tak przesyłany jest "obraz" z Twojej  kamerki ) i  udostępni go  na Twoim routerze.   Czyli taki własny server ( nie wiem czy motion ma takie możliwości ), ale dla kilku kamerek  będzie to kosztować sporo pracy CPU. Inna droga to przekierowanie portów na poszczególne kamerki. Z zródła stronki na kamerce możesz wyłuskać link  do skrypu stream.cgi

247

(8 odpowiedzi, napisanych Oprogramowanie / Software)

ok   więc    mam tablice thread_t[10]    tworząc nowy wątek (wątki są tworzone losowo) chcę  jego identyfikator umieszczać  w tej tablicy  ale  na pozycji nowej  lub    na pozycji  na której był już jakiś wątek  ale się zakończył  do wykrycia który wątek się już zakończył   używałem właśnie tej funkcji   int pthread_detach( thread_t tid );   co przy okazji odłączało wątek 

logi ze zdarzenia   jakie masz na myśli ?

248

(8 odpowiedzi, napisanych Oprogramowanie / Software)

ktoś może z was miał  problem z używaniem biblioteki libpthread   a  konkretnie  funkcji  int pthread_detach( thread_t tid );   która  kończy program błędem segmentation fault  ??

czy ja dobrze widzę   ustawianie Lini GPIO  w stan  0/1  dokonuje się przez operacje na plikach ? 

nie ma szybszego sposobu ?

250

(9 odpowiedzi, napisanych Oprogramowanie / Software)

ok  ale nazwę paczki  czy  po instalacji w katalogu /bin ?