udostępnilem na moim koncie ftp aplikacje Rad@Home na androida (bez żadnych zmian w kodzie). jest w http://krzyszp.info/matszpk/experimental/radathome_app (http://krzyszp.info/matszpk/experimental/radathome_app). proszę na początku testowac ją jako standalone. na razie nie mam odpowiedniego sprzętu do testów, dlatego ją udostępniłem wam. uruchamia się normalnie.
wymagany jest sprzęt i kernel ze wsparciem dla OTG (USB on the GO), no miernik. podobno OTG działa na SGS II.
jeśli ktos ma sprzęt może przetestować aplikacje.
Puszczam newsa na stronie Radioactive@Home, mam nadzieję, że odzew będzie spory ;)
Myślę, że czujnik musi jak najszybciej do Ciebie trafić :)
dzięki. na razie jeszcze nie mam odpowiedniego telefonu (z obsługą OTG, czyli host mode dla USB). aplikację należy wsadzić do katalogu /data/local/tmp i uruchomić np. z opóżnieniem w tle. no i podłączyc czujnik.
na razie mam inne plany zwiazane z projektem więc na razie nie planuje testów. dam znac jeśli będę chciał mieć czujnik do testów.
Za to na pewno mógłby się odezwać ktoś, kto takowy telefon ma...
Planujesz wsparcie (nawet opcjonalne) dla GPS'a?
jeśli chodzi o GPS to jeszcze nie wiem jak to będzie wyglądać. (łatwo to zrobić w javie, ale nie znalazłem jeszcze sposobu jak to zrobić w native exec w C/C++).
A jak wygląda dokumentacjia API dla C, C++ w Androidzie? Możesz jakimiś linkami się podzielić?
I drugie pytania - jak i czym kompilujesz soft dla Androida? Jakiego IDE używasz i jak tworzysz GUI dla programów?
w androidzie jest biblioteka bionic, która spełnia taką samą rolę co libc. jest też zestaw statycznych bibliotek STL/c++ (np.: stlport,stdc++). ogolnie API wygląda bardzo podobnie jak w normalnym linuksie (pomijając ograniczenia z obsługą wątków, C++, wyjątków i itd). takze są biblioteki do OpenGLES i itd. Oprocz tego jest binder do komunikacji. jednak pewnych rzeczy nie ma(np.: SYSV IPC, bo nie pasuje do mobilnych urządzeń i są lepsze rozwiązania). dla wersji 2.2 andka nie znalazlem obslugi akcelerometru i GPS'a :dunno:.
do kompilacji używam AndroidNDK w wersji r5b. są tam kompilatory C/C++ i jest możliwośc standalone aplikacji (w wersji beta ;) ).
Jeśli chodzi o IDE C/C++, to jest to prosty edytor Kate (z KDE), do javy uzywam EclipseSDK.
To powinno pomóc:
http://www.vogella.de/articles/AndroidLocationAPI/article.html#overview_locationapi
Edit:
Tylko że to też Java :(
android location wcale nie jest potrzebny (chyba, że chcesz z lokacji GPS określac polozenie na mapie). do GPS'a wystarczy zwykle android-sdk. poza tym jak widzisz jest to napisane w Javie. w androidzie aplikacje pisze się Javie, a do uruchamiania sluzy maszyna DalvikVM. kod natywny to całkiem inna bajka (tak jak w przypadku klienta i aplikacji). wiec mysle, że będzie potrzebny bridge pomiedzy aplikacja Javy, a kodem natywnym.
A nie próbowałeś dopytać się czegoś na forum developerów Androida na temat obsługi natywnej GPS'a i akcelerometrów?
Ps. Dzięki za info na temat środowiska w jakim pracujesz.
jest to dostępne od wersji android 2.3. ale nie probowałem. raczej byłoby lepiej wspierać także wersję 2.2.
Cytat: matszpk w 28 Sierpień 2011, 19:09
jest to dostępne od wersji android 2.3. ale nie probowałem. raczej byłoby lepiej wspierać także wersję 2.2.
Zanim wszystko przetestujemy, wersja 2.3 będzie pewnie najczęściej wykorzystywaną (wliczając tablety), dlatego myślę, że jeśli masz ochotę, to możesz popracować nad tą wersją najpierw.
Jeszcze jedno pytanie, mianowicie jakie jeszcze (oprócz S2) znasz modele telefonów/tabletów z obsługą OTG? Ewentualnie, jak można sprawdzić, czy dany model to wspiera?
co do innych modeli mogą być potrzebne zmiany w kerneli (specjalne wersje), raczej nie jest tak różowo, np.: dla HTC HD2 (trzeba miec specjalną przejsciowkę), jednak to może byc kłopotliwe lub nawet niemożliwe (ze względu brak wsparcia hardware'u). co do wersji 2.3 to raczej jest obsługa tylko akcelerometru (GPS'a nie ma) (zajrzałem do headerów systemowych). dla nowego 3.0 nie sprawdzalem.
No to pozostaje opcja napisania klienta w Javie...
niekoniecznie. jak pisałem można zrobić bridge (most) pomiędzy aplikacją natywną a w javie. po prostu zintegruje się to jakoś z NativeBOINC'iem ::)...
Podłączyłem dzisiaj czujnik (dopiero przyszedł do mnie odpowiedni kabelek z Hongkongu) do mojego SGS2, niestety, czujnik nie ruszył, ale:
Podłączenie samego kabla-przejściówki skutkowało pojawieniem się napisu "Host USB connected" (lub coś bardzo podobnego), niestety, nie mam pod ręką żadnego pendriva (swoją drogą, cholera wie, gdzie wcięło moje), więc podłączyłem... ładowarkę baterii e-papierierosów na USB (a co tam, telefon na gwarancji), skutek? Komunikat "High powered device connected" - telefon nie spłonął... No i teraz pytanie - czy Android obsługuje HID'a???
niby to powinno działać. co do HID'a to nie wiem :dunno:. ale to dobry znak, że SGS 2 (możliwe) obsługuje OTG.
zastanawiałem się czy nie wrzucić rad@home do listy aplikacji (moglbys sciągnąć go z poziomu nativeboinc'a :) ).
Cytat: matszpk w 10 Wrzesień 2011, 09:13
niby to powinno działać. co do HID'a to nie wiem :dunno:. ale to dobry znak, że SGS 2 (możliwe) obsługuje OTG.
zastanawiałem się czy nie wrzucić rad@home do listy aplikacji (moglbys sciągnąć go z poziomu nativeboinc'a :) ).
Obsługuje OTG (jest tak napisane w specyfikacji), więc generalnie nie wiem, dlaczego licznik nie rusza, zwłaszcza że podłączony do komputera zaczyna działać automatycznie nawet jak nie ma softu na hoście...
Podczep aplikację - zobaczymy, czy znajdzie sprzęt...
Hmmm a licznik nadal jest zasilany poprzez USB ? jeśli tak trzeba by było sprawdzić napięcia, może telefon nie daje rady... ? Spróbować z zewnętrznym źródłem zasilania... ? Podejrzewam że telefony mogą mieć jakieś zabez. na portach przed uszkodzonym sprzętem, jeśli licznik by nie był w stanie się wpasować w jakiś profil to nara...
Podłącz jakiś dysk wewnętrzny zasilany przez USB i zobacz co się będzie działo, ja tak podłączyłem raz do tableta i baterię rozładowało w 8 min. :boing:
Niestety, ja za mało umiem, żeby mu samodzielnie podłączyć zewnętrzne zasilanie (i zrobić to bezpiecznie dla telefonu). Niemniej, brak jakiejkolwiek reakcji (zarówno w telefonie jak i w czujniku) sugeruje, że problem jest w innym miejscu (vide reakcja telefonu na podłączenie ładowarki USB).
Można to jeszcze inaczej zrobić, niech Szopler albo TJM sprawdzą ile układ pobiera prądu (chyba jakieś pomiary robili lol) i sprawdzić w specyfikacji telefonu jak bardzo można go obciążyć...
Biorą max 30mA z włączonym buzzerem i podświetlonym wyświetlaczem, a w takim trybie startuje czujnik i dopiero soft na hoście może to wyłączyć odpowiednią komendą/ami zależnie, co chcesz osiągnąć (dostępne opcje to: dźwięk/podświetlenie/wyświetlanie wyników). Z wszystkim powyłączanym ok. 15-16mA.
Specyfikacji portu USB dla SGS2 nie udało mi się nigdzie znaleźć...
Przepisz dane z baterii - pojemność i napięcie... i daj ile telefon na tej baterii powinien chodzić... można policzyć trochę... 16 mA to nie aż tak sporo...
Ale jeśli telefon jest zasilany napięciem innym niż 5v to by znaczyło, że sam musi mieć w środku przetwornicę podciągającą napięcie dla USB. Spróbuj podłączyć inne urządzenia USB generujące obciążenie.
aplikacja jest już gotowa na liście. możesz ją dodać za pomocą managera :).
""High-power USB device connected. Nie można uzyskać dostępu do tego urządzenia"
Może uprawnienia??? To w końcu linux...
Bateria 3.7V, 6.1Wh, 1650mAh, chodzi około 12h z włączonym wifi.
Myślę, że potrzebuję wymienić rom w telefonie, tylko jeszcze nie wiem, jaką mam wersję ;/
nie wiem :dunno:. aplikacja i boinc jest uruchamiany z prawami manager'a. mozliwe, że manager nie ma takich uprawnień. zobaczę czy tak jest.
No dobra, na czym stanąłem...
Rom: I9100XXKE7
Kernel u mnie to : 2.6.35.7-I9100XWKF3-CL276555
"Numer wersji" (cokolwiek to oznacza): GINGERBREAD.XWKF3
No i teraz pytanie:
Którą wersję romu muszę pobrać, oznaczoną XXKE7 czy XWKF3???
może nie zmieniaj jeszcze romu ;) (i tak nie wiem jaki by trzeba wybrać). mozliwe, ze jest to problem z uprawnieniami. możesz też sprawdzić aplikacje w trybie standalone (samodzielnie uruchomioną z shella).
Tylko że do shella też nie mam dostępu...
do shella? włącz opcję debugowania w (Ustawienie->Aplikacje->Tworzenie->Debugowanie). Możliwe że będziesz potrzebował specjalnego kodu do Samsunga żeby to włączyć (poszukaj w internecie) prawdopodnie wpisywanego przy dzwonieniu. do łączenia używaj adb (jest android-sdk).
Telefon zrootowany, bez zmian.
Shellem zajmę się później...
Edit:
Gdzie są trzymane pliki projektów?
pliki klienta siedzą w katalogu /data/data/sk.boinc.nativeboinc/files/boinc. możesz cos tam poszperać, ale nie radzę :no:. raczej może być problem z biblioteką libusb albo ze sterownikami, albo po prostu nie ma uprawnień. nie wiadomo :dunno:.
możliwe, że jutro coś wymyslimy. na razie dzisiaj nie mam za bardzo czasu :dunno: (pilne zadanie w pracy).
matszpk - układ dla Ciebie złożony w 80%, w poniedziałek wyślę żebyś na ślepo nie działał 8) tylko podaj adres na PW!
szopler. na razie nie ma potrzeby. chciałbym tylko żeby krzyszp postarał się odpalić aplikację z shella. ostatecznie przygotuję wersję, która będzie zdalnie wysyłać debugi. poza tym mam htc sensation, który moze nie miec OTG (nie sgs2). planowałem, że krzyszp sprobuje to odpalic na telefonie (w sumie to on ma wszystkie czujniki, więc tak będzie najszybciej).
W razie problemów udostępnie boinc sdk, dzięki czemu będziecie mogli swoją aplikację skompilować dla androida ;). krzyszp, chciałbym, żebyś trochę włożył w to wysiłku jeśli chcesz odpalic to na swoim SGS II. jutro pomyślimy.
Z mojej strony nie ma problemu. Tylko początkowo się bałem root'owania ze względu na brak informacji na temat romu itd. Teraz sprawa załatwiona, więc jutro na pewno będę kombinował.
Z tego też powodu pytałem, gdzie app zapisuje swoje dane (aplikacja też "się debugguje"), niestety, podany przez Ciebie katalog jest u mnie pusty... (już od poziomu pierwszego "data").
Jakby zadziałało wraz z automatycznym odczytywaniem pozycji przez GPS to można by zrobić mapę radioaktywności Zony....
Cytat: Troll81 w 11 Wrzesień 2011, 12:48
Jakby zadziałało wraz z automatycznym odczytywaniem pozycji przez GPS to można by zrobić mapę radioaktywności Zony....
Technicznie nie ma przeciwwskazań, tylko chyba czujki trzeba by było przerobić na zasilanie bateryjne... :book:
a po usb z telefona ich nie zasilisz??
Cytat: Troll81 w 12 Wrzesień 2011, 11:49
a po usb z telefona ich nie zasilisz??
Niby tak... , ale skróciłoby to drastycznie czas działania telefonu i jest ryzyko że mogło by się przyczynić do szybszego zużycia akumulatorka (więcej cykli ładowania/rozładowania + większy pobór prądu). Nie mówiąc o telefonach które mają czasy młodości za sobą i akumulatorki nie starczają już na długo
(czyli wybór; albo robisz pomiary i telefon pada, albo nie robisz i możesz skorzystać z 112 jeśli Ci się coś w górach stanie) Czujka jest zasilana napięciem 5v, a baterie w telefonie mają zazwyczaj napięcie poniżej tej wartości, czyli musi być jakaś przetwornica podnosząca napięcie w tel. - nie wiadomo czy jest na tyle wytrzymała żeby udźwignąć na stałe podłączoną czujkę. Trzeba by było przeglądać specyfikacje każdego telefonu i tabletu z osobna ... (pamiętajmy że android nie chodzi tylko na telefonach, ale także na tabletach...)
Generalnie nie byłoby problemu jeśli ktoś by z taką czujką wyszedł z domu raz w tygodniu do kościoła, ale wyobrażam sobie że gro ludzi by ją zabierało na biwaki/wakacje i tutaj się zaczynają schody...
... ale to jest tylko moje zdanie ...
Po kilku testach...
Problemem okazuje się przetwornica, SGS2 nie pozwala na użycie urządzeń określanych jako "High Powered" czyli urządzeń konsumujących więcej niż 100mA - niestety, ale nasz czujnik pobiera więcej w momencie startu... Po wyjęciu układu sterującego przetwornicą czujnik zadziałał (ale to oczywiście bez sensu, gdyż nie tworzy żadnych zliczeń).
Zadaniem na teraz jest lekkie przerobienie czujnika tak, aby nie wymagał on więcej niż 100mA w dowolnym momencie (czyli ograniczenie "konsumpcji" przez przetwornicę do akceptowalnego poziomu) bądź użycie alternatywnego zasilania...
@Matszpk - nie udało mi się nigdzie w telefonie znaleźć folderu z plikami projektu...
Edit:
Niestety, czujnik podłączony bez przetwornicy nie jest prawidłowo rozpoznawany przez soft:
Stderr output
<core_client_version>6.10.58</core_client_version>
<![CDATA[
<message>
aborted by user
</message>
<stderr_txt>
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
</stderr_txt>
]]>
Niestety przetwornica ma to do siebie, że na rozruchu potrzebuje trochę prądu - pracuje na pełnej mocy do momentu naładowania kondensatora 1µF do napięcia 400V...
Można spróbować napisać w firmware aby przetwornica po podłączeniu układu do USB była wyłączona (procek wystawia logiczną 1 na pin PB0). Dopiero po jakimś czasie (po naładowaniu się kondensatorów na płytce) włącza przetwornicę. Wtedy pociągnie potrzebną energię z kondensatorów i jest szansa że całość zadziała... choć może być też konieczna przeróbka części związanej ze sterowaniem przetwornicy... się okaże
krzyszp jeśli chodzi o katalog projektu to szukaj w pamięci wewnętrznej telefonu (np.: za pomocą shella, jeśli masz roota). myślę, że to nie będzie potrzebne :). mozesz odpalic aplikację z shella jako standalone z opóźnieniem w tle:
(sleep 10; ./program)&
wyciągając kabel potem.
Cytat: matszpk w 12 Wrzesień 2011, 18:17
krzyszp jeśli chodzi o katalog projektu to szukaj w pamięci wewnętrznej telefonu (np.: za pomocą shella, jeśli masz roota). myślę, że to nie będzie potrzebne :). mozesz odpalic aplikację z shella jako standalone z opóźnieniem w tle:
(sleep 10; ./program)&
wyciągając kabel potem.
Nie rozumiesz...
Aplikacja pod stronie NativeBOINC'a działa, ale nie może uzyskać połączenia z czujnikiem... (Mimo wyjętego sterownika przetwornicy, co daje minimalny pobór mocy czujnika). Wskazuje to więc na problem programowy po stronie Androida...
Ps. Pisałem, że przeszukałem telefon (mam root'a) i nie mogę znaleźć w drzewie katalogów boinc'a, przez co nie mogę odpalić programu w trybie standalone...
mozliwe, że masz racje (problem programowy).jednak do odpalenia aplikacji w standalone nie potrzebujesz boinca (wrzucasz i odpalasz aplikacje np.: w katalogu /data/local/tmp). jutro przygotuje specjalną wersja z debugowaniem zdalnym i zobaczymy oraz opublikuje boinc sdk. na razie
Dziś poleciał do Krzyśka specjalnie spreparowany kabel który umożliwia zasilenie czujnika z zewnętrznego źródła, mam nadzieję że prace teraz ruszą :)
Ok. dajcie mi trochę czasu (ok. tydzień). akurat intensywnie pracuje nad inną aplikacją boinc'a (milkyway). mam też w planach udostępnienie boinc-api i wydanie nowej wersji managera (z trybem developer mode, dzięki któremu będzie można instalowac wlasne aplikacje boinca). szczególy planuje ujawnic dopiero za tydzien/2 tygodnie (musze to jeszcze przemyslec)
jesteś wielki :respect:
UWAGA!!!
Dzisiaj doszedł do mnie kabel od naszego kolegi Kotfryc'a (http://www.boincatpoland.org/smf/profile/?u=10000477) ( :respect:) z zewnętrznym (bateryjnym) zasilaniem, który... DZIAŁA.
W związku z tym, istnieje bardzo duża opcja, że nasz czujnik zadziała z telefonem Samsung Galaxy S2, potrzeba tylko kilku poprawek:
1. Wyszukiwane urządzenie teraz ma nazwę "radioactiveathome.org GRS" - więc matszpk - możesz to zmienić?
2. Poproszę o bardzo krótkie próbki, zapisujące jak najwięcej informacji do stderr.txt.
Panowie, szacun wielki dla Kotfryc'a i matszpk'a za zajęcie się tematem!
Ad.2 - Włącz debug ;)
Cytat: Szopler w 27 Październik 2011, 17:16
Ad.2 - Włącz debug ;)
Włączyłem:
<core_client_version>6.12.38</core_client_version>
<![CDATA[
<message>
aborted by user
</message>
<stderr_txt>
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
</stderr_txt>
]]>
Kotfryc i matszpk szacun macie mój wielki i jak spotkam to od piwa się nie wywiniecie :D
cześć. jutro wznawiam pracę nad rad@home (i to na pewno). na pierwszy ogien zmienię nazwę i opublikuje boinc-api. włączę też debugowanie. na razie trochę myślę nad milkyway@home. w ten piątek już zaczynamy :)
już udostępniłem boinc-api dla androida. jest pod katalogem boinc_api (http://krzyszp.info/matszpk/boinc_api/ (http://krzyszp.info/matszpk/boinc_api/)).
Jutro będę kombinował, ale zawczasu mi powiedz, jakie pliki (i gdzie) aplikacja zapisuje, to mi pomoże...
Podczas startu klient w logach zapisuje ścieżkę gdzie został uruchomiony. Przejdz zakładki "Messages" w managerze i znajdz wpis "Data directory: ...". Tam jest podana ścieżka do katalogu boinc'a. tam się znajdują pliki aplikacji i itp.
Szukaj w tego w nie pamięci SD, tylko to jest w wewnętrznej pamięci telefonu. możesz przeglądać pliki w tej pamięci z android shella. Możesz przejść do katalogu boinca (jeśli masz zrootowany telefon) za pomocą android shella (polecenia "adb shell").
Aplikacja typowo zapisuje pliki stderr.txt, boinc_lockfile, checkpoint, typowo w katalogu w którym działa (typowo gdy działa z poziomu klienta jest to katalog_boinca/slots/XX).
Ściągnij sobie program adb albo android-sdk (tam jest program adb). pamietaj o włączeniu debugowania.
Normalnie powinienieś w android shell'u przejść do katalogu /data/data/sk.boinc.nativeboinc/files/. tam jest klient i jego pliki.
PS.: możesz odpalić aplikację jako standalone z poziomu android shella (tak jak pisałem wcześniej).
Cytat: krzyszp w 27 Październik 2011, 16:42
UWAGA!!!
Dzisiaj doszedł do mnie kabel od naszego kolegi Kotfryc'a (http://www.boincatpoland.org/smf/profile/?u=10000477) ( :respect:) z zewnętrznym (bateryjnym) zasilaniem, który... DZIAŁA.
Krzyś raczej bez obaw możesz podłączyć w ten sposób zarówno czujkę v1 jak i v2. Do zasilania nie trzeba używać baterii 9v, to może być dowolne źródło w zakresie 7-17v jeśli dobrze pamiętam. Czyli można odciąć kable od uchwytu do baterii, zgolić i skręcić na jakimś zasilaczu i będzie OK. Układ jest zabezpieczony przed odwrotną polaryzacją specjalnie dla Ciebie, jakbyś źle coś podłączył ;) Więc nie musisz się obawiać :) Czekam cały czas na paczkę z PL, już chyba 5 tydzień :sick: mam pomysł jak zrobić bardzo wygodne przejściówki dla czujki żeby można było podłączyć do telefonu+baterii - taki
dodatkowy moduł :D . Cenowo powinno to wychodzić bardzo korzystnie, więc może parę osób mogło by być zainteresowanych jeśli ta aplikacja powstanie.
Cytat: Troll81 w 27 Październik 2011, 20:23
Kotfryc i matszpk szacun macie mój wielki i jak spotkam to od piwa się nie wywiniecie :D
Dzięki Troll :parrrty: , ale mówiąc szczerze to ta przejściówka zajęła mi 15min nie licząc pójścia na pocztę, więc postaw drugie piwo
matszpk, który na pewno dużo więcej wysiłku w to włożył. :)
dzięki. moja praca w ten projekt dopiero się zaczyna (rad@home). jeśli macie możliwość, możecie skorzystać z mojego boinc-api i skompilować aplikację.
do krzyszp: do przeglądania katalogów wykorzystaj android shell'a (adb shell).
czieszę się, że interesujecie nadal moim projektem :).
Ok, dostałem się do shella, znalazłem odpowiedni folder (co ciekawe, Astro go nie wyświetla, mimo zrotowania telefonu i zaznaczenia wyświetlania ukrytych plików).
Koniec końców, dostałem się do danych, niestety soft dalej szuka "Datastore" zamiast "radioactiveathome.org GRS" - możesz przekompilować i wrzucić?
Chętnie bym sam pokombinował, niestety kompletnie nie wiem jak skonfigurować sobie środowisko, żeby bawić się boinc-api dla andka (na Windowsie).
Dzięki za Twoją robotę :)
Ps. Fajnie by było skorzystać z GPS w aplikacji na andku...
dobrze :). file managery mogą nie miec po prostu uprawnień (roota) ;). ściągnij sobie np.: terminal emulator (w android markecie jest). będziesz mógł nim uruchamiać programy i boinca. zalecam jednak uruchamianie jako samodzielnej aplikacji (np.: w katalogu /data/local/tmp). skompiluje go i umieszczę nową wersję.
PS.:już jest na ftp :).
PS2: z poziomu managera wybierz opcje Update binaries w 'Manage client'.
akurat dodawałam milkyway@home do obsługi i powinienes ponownie zrobic update aplikacji. sorry za niedogodności.
Niestety, nadal się nie komunikuje z czujnikiem, mimo wyszukiwania już prawidłowej nazwy...
ok. jutro wprowadzę debug do libusb i do aplikacji (dokładnie zobaczymy na czym polega problem).
Może dałbyś radę zrobić apkę z GUI (nie boincową) wyświetlającą komplet danych na ekran?
teoretycznie jest to możliwe (jednak będzie to trochę czasu kosztować). możesz sobie i mi ułatwić pracę instalując terminal emulatora (jest w markecie). pozwala on uruchomianie programów z poziomu shella na telefonie bez podłaczania się przez shell (taki terminal na telefonie). pamiętaj żeby mu dac uprawnienia roota (z np.:za pomocą SuperUser). jesli w ogole nie będzie możliwe to zrobie taką appkę. sproboj zainstalowac terminal emulator.
Mam terminal emulator zainstalowany (superusera też), kłopot w tym, że nie mam tam żadnego edytora tekstowego i muszę za każdym razem stderr kopiować i zmieniać ręcznie uprawnienia, żeby odczytać.
vi nie ma????? |-?
już włożyłem wersję debugowanem libusb. będą się pojawiać nowe komunikaty w stderr.txt. w razie czego udostepnie kody libusb z debugowaniem.
Zawartość stderr.txt:
Debug: enabled; sample time: 40, repeats: 6
Radac $Rev: 120 $ starting...
USB info: check_usb_vfs (finding): /dev/bus/usb
USB info: check_usb_vfs (find): /dev/bus/usb:002
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
error finding radioactiveathome.org GRS: The specified device was not found
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
z wstępnej analizy wygląda na to, że znajduje szyny USB, ale nawet znajduje jakies urządzienia, ale z jakiegos powodu nie może się do nich dostać. poprawie trochę debug i jeszcze zobaczymy. włączę też debug na radioactiveathome (domyślnie).
Jedno z urządzeń to "host usb" - wyświetla mi, gdy podłączam przejściówkę z gniazdem USB do telefonu.
Jest opcja odczytania nazw urządzeń USB przez debug?
doda się taką opcję :).
OK. udostępniłem nową wersję aplikacji. włączony debug libusb i rad@home ;). Przy okazji proszę sprawdzić uprawnienia do katalogów urządzeń i plików, do których szuka aplikacja (/dev/bus/usb/001 i /dev/bus/usb/002).
brak uprawnień może być powodem nie znajdowania urządzeń.
Niestety, dalej nie działa, dołączam stderr.txt
ok. jeśli możesz sprawdz po prostu uprawnienia do katalogu urządzaniami USB '/dev/bus/usb/001'. może to być przyczyna problemu. jeśli możesz odpal aplikację jako standalone (czyli samą aplikację z poziomu shella), najlepiej jako root, nawet z poziomu terminal emulatora (za pomocą 'vol-down c' zamykasz aplikację) np z katalogu /data/local/tmp.
ok. jeśli chcesz możesz sprobowac jeszcze raz (możliwe, że nie ściagnałes nowej wersji 0.0.2.1d). obecna 0.0.3d to powinna być, ta która ma włączony debug.
Ok, widać, że app nie ma uprawnień... Czyli stary problem z USB na linuksach (jeśli chodzi o managera). Najchętniej bym ustawił uprawnienia managera na roota, ale nie wiem jak go dodać do Superuser... W załączniku znowu log.
Pokombinuję trochę, ale chętnie przyjmę pomoc :)
Edit:
Zawartość najnowszego stderr.txt:
Nowy plik
stderr.txt
Debug: enabled; sample time: 40, repeats: 6
Radac $Rev: 120 $ starting...
USB info: check_usb_vfs (finding): /dev/bus/usb
USB info: check_usb_vfs (find): /dev/bus/usb:002
usb_set_debug: Setting debugging level to 3 (on)
USB info: usb os find buses
USB info: usb os find bus (add): 002
usb_os_find_busses: Found 002
USB info: usb os find bus (add): 001
usb_os_find_busses: Found 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
usb_os_find_devices: Couldn't open /dev/bus/usb/002/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
usb_os_find_devices: Couldn't open /dev/bus/usb/002/001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
usb_os_find_devices: Couldn't open /dev/bus/usb/001/002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
usb_os_find_devices: Couldn't open /dev/bus/usb/001/001
USB info: usb_os_determine_children: 001
error finding radioactiveathome.org GRS: The specified device was not found
USB info: usb os find buses
USB info: usb os find bus (add): 002
usb_os_find_busses: Found 002
USB info: usb os find bus (add): 001
usb_os_find_busses: Found 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
usb_os_find_devices: Couldn't open /dev/bus/usb/002/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
usb_os_find_devices: Couldn't open /dev/bus/usb/002/001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
usb_os_find_devices: Couldn't open /dev/bus/usb/001/002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
usb_os_find_devices: Couldn't open /dev/bus/usb/001/001
USB info: usb_os_determine_children: 001
ok. dzięki. w zasadzie nie musisz tego robić. odpal po prostu aplikację rad@home z poziomu terminal emulatora w jakimś katalogu (zamknij za pomocą kombinacji vol-down C). dzisiaj lub jutro sprawdzę czy klient i manager mogą działać z uprawnieniami roota.
Manager po prostu musi poprosić o uprawnienia root'a odpalic klienta boinc z takimi uprawnieniami. najlepiej byloby gdyby klient odpalał aplikację z uprawnieniami root (trzeba będzie go trochę przerobic). dzisiaj lub jutro wypuszcze wersję managera dla root'a (będzie odpalał klienta z roota) i zobaczymy.
Będę czekał :)
Uruchomienie czujnika na telefonie/tablecie daje ogroomne możliwości.
ok. udostepnilem wersę z opcją odpalania klienta jako root (NativeBOINC-root.apk). w opcjach Preferences jest opcja 'Run as root'. przed odpaleniem musisz to opcję włączyć i zamknąć klienta jeśli jest uruchomiony (shutdown).
Niestety, bez zmian:
Debug: enabled; sample time: 40, repeats: 6
Radac $Rev: 120 $ starting...
USB info: check_usb_vfs (finding): /dev/bus/usb
USB info: check_usb_vfs (find): /dev/bus/usb:002
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
error finding radioactiveathome.org GRS: The specified device was not found
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
USB info: usb os find buses
USB info: usb os find bus (add): 002
USB info: usb os find bus (add): 001
USB info: usb os find devices: /dev/bus/usb/002
USB info: usb os find devices (scan): /dev/bus/usb/002: 002
USB info: usb os find devices (scan): /dev/bus/usb/002: 001
USB info: usb_os_determine_children: 002
USB info: usb os find devices: /dev/bus/usb/001
USB info: usb os find devices (scan): /dev/bus/usb/001: 002
USB info: usb os find devices (scan): /dev/bus/usb/001: 001
USB info: usb_os_determine_children: 001
tak, wgrałem nowego managera, ustawiłem aby uruchamiał się jako root, i od nowa odpaliłem próbkę...
ok. jeśli odpaliłeś ponownie klienta (chodzi o to żeby odpalic klienta, a nie tylko probke), to będzie trzeba pomyslec czy jest inna przyczyna (libusb nie jest kompatybilny z androidem, czy brakuje ci sterownika, co jest wątpliwe, czy to też jest kwestia kernel'a). sprawdz katalog /dev/bus/usb i co w nim się znajduje.to może pomóc.
Ma tam tylko dwa puste podkatalogi: 001 i 002
ok. no to wiemy, że system nie wykrywa urządzeń. trzeba będzie trochę pogooglować nt. sterowników i itp.
Mógłbyś napisać jak kompilujesz (pod czym) apkę pod Androida, chciałbym zobaczyć, czy coś potrafię z tym zrobić...
co do kompilacji aplikacji używaj mojego boinc-api. Do kompilacji potrzebujesz Android NDK z obsługą API level 4 (android 1.6 i wzwyż). do kompilacji używałem Linux'a, Android NDK i Android SDK (wybierz najlepiej najnowszą). kompilujesz za pomocą poleceń podanych w README.
$CC $CFLAGS $CPPFLAGS $LDFLAGS -o executable sourcefiles $BOINC_LIBS $STDCPP
lub (c++)
$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o executable sourcefiles $BOINC_LIBS $STDCPP
nie zapomnij ustawić ANDROID_NDK_ROOT i BOINC_API_ROOT (w init.sh) i uruchomić init.sh.
Co do libusb. możesz pobrać binaria (akurat wsadziłem) z mojego ftp na twoim koncie (katalog experimental). jeśli chcesz skompilować swoją własną wersję użyj do tego wersji libusb-0.1.12.
PS.: nie zrezygnowałem z projektu. obecnie kończę pracę nad nową wersją managera (został gruntownie przebudowany). za jakich czas (kilka tygodni) planuje wrzucić go do Google Play (stary Android Market).
Już po napisaniu posta zauważyłem, że manager u mnie nie działa jak powinien (korzystam z innego romu), ale za dzień lub dwa (zależne od obciążenia pracą) wrócę do stockowego i postaram się przyjrzeć.
Napisz jeszcze jak możesz, jakiego IDE używasz (Eclipse?).
używam eclipse'a sdk. aplikacje boinc'a kompiluj z shella linuxowego. w następnym tygodniu opublikuję nową wersję manager'a :).