Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Zacząłem pisać kilka tygodni temu poradnik dotyczący instalacji sterownika tablicy interaktywnej na linuksie
[url]http://dug.net.pl/tekst/203/tablica_interaktywna/[/url]
Mam jednak pewien problem, z którym nie potrafię sobie poradzić.
Posiadam owy sterownik, który działa wyśmienicie, jednakże na potrzeby owego poradnika chciałby uprościć jego instalację.
Na dzień dzisiejszy instalacja przebiega w następujący sposób:
1. pobieramy sterownk
(udostępnię go troszkę później)
2. naturalnie rozpakowujemy go
3. w katalogu /linux-driver/httwb/httwb-hid/src kompilujemy odpowiedni moduł poleceniem make, w wyniku otrzymamy plik httwb-hid.ko
4. w katalogu /linux-driver/httwb/httwb-usb/src kompilujemy odpowiedni moduł poleceniem make w wyniku otrzymamy plik httwb-usb.ko
5. te dwa pliki umieszczamy w ręcznie utworzonym katalogu /linux-driver/nazwa_dystrybucji/numer_jądra/, czyli np.: /linux-driver/debian/3.2.0-3-686-pae/
6. uruchamiamy skrypt install-driver.sh, który dopełnia instalację sterownika wraz z dodatkowym oprogramowaniem
Na dzień dzisiejszy całość i tak nie wygląda źle, bo była jeszcze mniej zautomatyzowana, ale chciałbym, aby ta instalacja była jeszcze prostsza. Zależy mi, aby to ostatni skryt wykonywał czynności od 3 do 5.
Dzięki za jakąkolwiek pomoc.
Ostatnio edytowany przez radziojedi (2012-10-02 15:54:33)
Offline
Z grubsza coś takiego:
DISTRONAME=`lsb_release -is | tr [:upper:] [:lower:]` KERNEL=`uname -r` make -C /linux-driver/httwb/httwb-hid/src make -C /linux-driver/httwb/httwb-usb/src mkdir -p /linux-driver/${DISTRONAME}/${KERNEL} cp -f /linux-driver/httwb/httwb-hid/src/httwb-hid.ko /linux-driver/httwb/httwb-usb/src/httwb-usb.ko /linux-driver/${DISTRONAME}/${KERNEL}/
Można (i trzeba) to rozbudować o dodatkowe testy i możliwość podania parametrów ręcznie (np. nie wszystkie dystrybucje mają domyślnie zainstalowane lsb_release; Debianie patrzę na Ciebie!), ale dla wstępnych testów jak znalazł.
PS Na pewno /linux-driver/... a nie ./linux-driver/...?
Ostatnio edytowany przez azhag (2012-10-02 21:04:32)
Offline
No super, działa:) dzięki.
Nawiązując do lsb_release, w głównym skrypcie (jeśli mogę go tak nazwać) - install-driver.sh, sprawdza z jaką dystrybucją mamy do czynienia (odpowiednio suse: SuSE-release, redhat: redhat-release).
Myślałem, aby dopisać powyższy kod do owego głównego skryptu na samym początku i po kłopocie, ale chyba to nie będzie takie proste własnie ze względu na lsb_release. Trzeba będzie to wkleić gdzieś do środka. Tak, aby to wszystko działało nie tylko na debianie.
Potestuję i spróbuję zrobić to samodzielnie:)
Zauważyłem również, że moduły mają problem z kompilacją na jądrach powyżej wersji 3.2, ale to już pewnie na później.
Offline
[quote=radziojedi]działa:)[/quote]
Niemożliwe, bo był drobny błąd, który dopiero teraz poprawiłem. ;)
Jakbyś mógł podrzucić ten skrypt, to by można pomyśleć jak to ładnie przerobić/dopisać.
Offline
[quote=azhag][quote=radziojedi]działa:)[/quote]
Niemożliwe, bo był drobny błąd, który dopiero teraz poprawiłem. ;)[/quote]
Tak, zauważyłem i również wcześniej poprawiłem:)
owy skrypt: [url]http://chmura.śrem.com.pl/public.php?service=files&token=4672be4456afb1d5d92f1b16f60c1c0e11a17b20&file=/install-driver.sh[/url]
Ostatnio edytowany przez radziojedi (2012-10-02 21:19:48)
Offline
Hm, osoba, która pisala ten skrypt, nie dostałaby certyfikatu azhaga. ;)
Szczególnie podobało mi się:
echo -n "cośtam\n"
W skrypcie już masz dwie interesujące nas zmienne: $distrib_name i $KER_VER. To więc już odpada. Kwestia dorzucenia w odpowiednim miejscu make'ów i skopiowania modułów w odpowiednie miejsca.
Dopisek:
A-ha!
Odpowiednia funkcja już jest, tylko nie wiem czemu budowane są tylko dla altlinuksa — wydaje mi się, że tego ifa można wywalić i będzie działać uniwersalnie dla wszystkich (obsługiwanych) dystrybucji:
#################################################### # Desc: get the distribution name for drivers' version # # #################################################### build_modules() { if [ "${DISTRIB_NAME}" = "altlinux" ]; then local hid_src_dir="${CUR_DIR}/linux-driver/${DISTRIB_NAME}/${KER_VER}/hhtwb-hid/src/" local usb_src_dir="${CUR_DIR}/linux-driver/${DISTRIB_NAME}/${KER_VER}/hhtwb-usb/src/" make -C ${hid_src_dir} clean make -C ${hid_src_dir} cp -rf ${hid_src_dir}/${HID_DRIVER} ${CUR_DRIVER_DIR} make -C ${hid_src_dir} clean make -C ${usb_src_dir} clean make -C ${usb_src_dir} cp -rf ${usb_src_dir}/${USB_DRIVER} ${CUR_DRIVER_DIR} make -C ${usb_src_dir} clean fi return 0 }
(swoją drogą źle jest funkcja okomentowana).
Offline
Oficjalnie (tzn "półoficjalnie, gdyż jeszcze nie jest publiczny) sterownik jest "ubuntu only":)
Jutro będę testował, gdyż będę miał dostęp do tablicy interaktywnej.
Ostatnio edytowany przez radziojedi (2012-10-02 21:56:56)
Offline
[quote=radziojedi]Oficjalnie (tzn "półoficjalnie, gdyż jeszcze nie jest publiczny) sterownik jest "ubuntu only":)[/quote]
A jednak lista wykrywanych systemów w skrypcie jest dużo dłuższa. :)
Offline
Chciałbym odkopać post. Przepraszam za duuuużą przerwę. Szczególnie Ciebie azhag, gdyż pomogłeś pierwszy (i chyba jedyny:)). Przyznam się, że po kilku tygodniach przerwy myślałem, producent sam weźmie się do roboty i udostępni sterownik w przejrzystej, dostępnej formie. Ale niestety sterownik na stronie producenta (a raczej na jego serwerze ftp, który i tak nie jest dostępny dla wszystkich) jest cały czas w niezmienionej formie.
Tablice interaktywne Qomo cały czas w Polsce się sprzedają, także warto byłoby dokończyć owy sterownik, gdyż wsparcie tej firmy dla Linuska jest zerowe.
Na czym stanąłem?
Sterownik kompiluje się prawidłowo na aktualnym, stabilnym kernelu Debiana Wheezy. Zarówno 32-bitowym, jak i 64-bitowym. Problem występuje jedynie przy próbie kompilowania na nowszym kernelu. Na przykład tego z backportów:
root@HPdv5:/usr/local/board_driver/linux-driver/test/hhtwb-usb/src# uname -r 3.9-0.bpo.1-amd64
Otrzymuję wtedy taki komuniakt:
root@HPdv5:/usr/local/board_driver/linux-driver/test/hhtwb-usb/src# make make -C /lib/modules/3.9-0.bpo.1-amd64/build M=/usr/local/board_driver/linux-driver/test/hhtwb-usb/src modules make[1]: Wejście do katalogu `/usr/src/linux-headers-3.9-0.bpo.1-amd64' CC [M] /usr/local/board_driver/linux-driver/test/hhtwb-usb/src/hhtwb-usb.o /usr/local/board_driver/linux-driver/test/hhtwb-usb/src/hhtwb-usb.c: In function ‘skel_open’: /usr/local/board_driver/linux-driver/test/hhtwb-usb/src/hhtwb-usb.c:98:9: error: implicit declaration of function ‘err’ [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors make[4]: *** [/usr/local/board_driver/linux-driver/test/hhtwb-usb/src/hhtwb-usb.o] Błąd 1 make[3]: *** [_module_/usr/local/board_driver/linux-driver/test/hhtwb-usb/src] Błąd 2 make[2]: *** [sub-make] Błąd 2 make[1]: *** [all] Błąd 2 make[1]: Opuszczenie katalogu `/usr/src/linux-headers-3.9-0.bpo.1-amd64' make: *** [all] Błąd 2
Gdzie może leżeć problem? Czy jestem sam w stanie sobie poradzić z tym problemem, czy producent, czyli firma Qomo musi poprawić sterownik? Niestety pomoc techniczna tej firmy, jak tylko słyszy słowo Linux - przestaje mówić ludzim językiem.
Dzięki za ewentualną pomoc.
Offline
Niestety po kilkunastu mailach do supportu firmy Qomo otrzymałem informację, iż Qomo nie jest zainteresowane dlaszym rozwojem strerownika dla Linuska. Tym samym aktualny sterownik kompiluje się tylko dla jajek <= 3.2. Co może być przyczyną?
Offline
To może być przyczyną, że od wersji 3.2 do 3.12 zmieniło się w jaju tyle,
że nawet Nvidia potrzebowała okresowo kliku różnych łatek, plan L.T. zakłada, że jajo w jakiejś tam perspektywie czasu ma schudnąć do poziomu ~30 MB (kompresja xz), przy takiej samej liście obsługiwanego sprzętu.
W dodatku, jeśli ta tablica jest zapinana np do USB, to jest spore parcie, żeby urządzenia usb wypychać do programów, które robią za sterowniki w przestrzeni userspace, i korzystają z podsystemu usb kernela,
jak np [url=http://sourceforge.net/projects/kb2kskype/files/usbb2k-api/]ten[/url].
FIrma Qomo, jak wszystkie szajsy na świecie, nie potrafi robić sterowników do swoich urządzeń, zatrudnia nie jakichś prawdziwych specjalistów, tylko takich z ogłoszenia, co na pytanie, czy programują w C odpowiedzą "tak, oczywiście" a potem - sterownik do Linuxa? - "nooooo" - a potem jest jazda na forum Ubuntu :).
I potem tacy "eskperci" robią stery, boki można zrywać czasami nawet przy ATI czy Realteku, a co dopiero przy jakimś Qomo.
Coś mi się zdaje, że będziesz musiał samodzielnie we własnym zakresie napisać ten sterownik, na podstawie fabrycznych wypocin.
Na szczęście na wszystkich forach i listach mailingowych dotyczących rozwoju Linuxa możesz liczyć na solidne wsparcie. ;)
Ostatnio edytowany przez Jacekalex (2013-12-30 17:47:21)
Offline
Dziwię się ich polityce, bo tablice interaktywne InterWrite (konkurencja) zrobiła bardzo dobry sterownik (i cały czas go aktualizuje) dla linuksa. W wielu przedszkolach oraz szkołach jest używany linux. Nawet jeśli tego nie widać w cyfrach.
Rozumiem, że z "teoretycznego" punktu widzenia jestem w stanie napisać sam sterownik dla mojej tablicy, tylko czy "praktyczny" punkt widzenia mnie nie przytłoczy?:)
Mam sterownik dla jajek <= 3.2 oraz spore samozaparcie. Znacie jakiś dobry poradnik howto - coś a'la "Sterownik usb na linusa dla opornych"?
Czy opierać się na starym sterowniku, czy lepiej zacząć od zera?
Offline
Wycofali się, trudno, nie ma co płakać nad rozlanym mlekiem i roztrząsać czemu się na to zdecydowali.
To co teraz należy wg mnie zrobić:
1. Poprosić o jasną deklarację, że ostatnią wersję sterownika udostępniają na wolnej licencji (najlepiej chyba "GPL v2 lub wyższa", żeby łatwo włączyć do jądra?). Lub odszukać wersję, dla której taką deklarację dali.
2. Wstępnie uporządkować bałagan w sterowniku. Nie mówię o jakiś wielkich poprawkach w niuansach w kodzie źródłowym, ale np. poprawić najprostsze duperele typu ten kulawy instalator (w tym [i]możliwe[/i], że mogę pomóc).
3. Udostępnić i zrobić wielkie publicity (tu mogę pomóc), spróbować dotrzeć jak najszerzej — a mówiąc "jak najszerzej" mam na myśli wprost ludzi, którzy programowaniem jądra się zajmują. Bo samemu, z samouczkiem "dla opornych", to obawiam się, że zbyt daleko nie zajdziemy. A na firmę niestety możemy przestać liczyć.
Ostatnio edytowany przez azhag (2013-12-30 21:42:45)
Offline
Żeby się tak bawić, to chyba od czegoś trzeba [url=http://ubuntu.pl/forum/viewtopic.php?f=145&t=166153#p946978]zacząć[/url]? ;)
Jeśli ta tablica chodzi na usb, to jednak sugerowałbym zajrzeć do bibliotek libusb, libsub-compat, i skrobać własny programik do obsługi sprzętu.
Taki programik, działający w trybie demona, jest znacznie odporniejszy na zmiany w kernelu, niż moduł do samego jajka bezpośrednio.
Tak działa wspomniany wyżej ubb2k-api-mod do bramki usb telboxa.
Może to być materiał poglądowy:
http://sourceforge.net/projects/kb2kskype/files/usbb2k-api/
Pomiędzy jajem 2.6.28 a jajem 3.12.6 mam tą samą wersję programiku,
i chodzi, sterownik w jaju trzeba by już kilka razy przepisywać w międzyczasie.
Chociaż z drugiej strony, taka tablica, to jest praktycznie zwykły wyświetlacz dotykowy, więc powinien pasować do evdeva i jego modułów odpowiedzialnych za myszki, panele dotykowe, itp, jeśli chodzi na usb.
Podobnych urządzeń Evdev obrabia całe tysiące, od smartfonów po olbrzymie ekrany prezentacyjne z zewn wskaźnikiem.
Ta firma Qomo po prostu do steru podchodzi od dooopy strony.
Przecież tablica interaktywna, to nie sztuczny satelita ziemi, ani rakieta przeciwlotnicza, żeby ster kombinować we własnym zakresie, bo to wielka tajemnica wojskowa. :D
Ostatnio edytowany przez Jacekalex (2013-12-30 21:57:41)
Offline
Tablica jest na usb. Ogólnie rzecz biorąc, to nic skomplikowanego (przynajmniej w moim przypadku): biała tablica ścierna, na czterech ścianach podczerwień, która ma określać położenie pisaka/palca. To wszystko.
[img]http://www.a-com.com.au/wp-content/uploads/2010/12/QOMO_qwb200nostand_web1.jpg[/img]
Offline
Grafika do niej idzie przez usb?
Tablica wyświetla obraz samodzielnie?
Czyli ma procesor, bufor ramki obrazu, interfejs input odbierający sygnał z czujników podczerwieni, i system operacyjny, pewnie którąś wersję FreeBSD, jak znam życie, ewentualnie jakiś Linux.
Pozostaje pytanie, czemu trzeba sterownika, czemu to cudo nie ma na doopie RJ45, a w brzuchu wifi, żeby gadać z kompem jak prawie każdy drukarko/skaner za 400 zł.
Przecież dwa systemy operacyjne mogą gadać ze sobą dowolnym protokołem sieciowym bez żadnych ekstra sterowników.
Wystarczyć powinien program do obsługi tablicy, jak do setek podobnych urządzeń, np kas fiskalnych.
Wniosek? Do konia nie podchodzi się od tyłu, do barana od przodu, a do tandety z żadnej strony.
Jeśli firma łaskawie nie chce robić sterowników do swojego sprzętu, to nie zasługuje, żeby jej za ten sprzęt płacić, jeśli jest jakaś inna, lepsza alternatywa.
Linuksiarze też powinni mieć szacunek do siebie i swoich systemów.
Ja kupuję zawsze tylko taki sprzęt, który ma solidne wsparcie we FreeBSD i OpenBSD, choć na codzień tych systemów nie używam.
Ciekawe, dlaczego....... ;)
Ostatnio edytowany przez Jacekalex (2014-01-01 14:52:22)
Offline
Tablica nie wyśwetla obrazu samodzielnie. Za obraz odpowiedzialny jest projektor, który "rzuca" obraz na tablicę. Sama tablica, to cztery paski podczerwieni i nic więcej. Teoretycznie taki sterownik powinien być czymś bardzo prostym. Taka tablica powinna kosztować max 400zł, a nie 4000zł
Ostatnio edytowany przez radziojedi (2014-01-01 10:51:21)
Offline
To to jest tylko przerośnięty tablet, może nie dotykowy, tylko na bazie czujników podczerwieni.
Do takich rzeczy w Linuxie jest evdev, i obsługuje setki podobnych dziadostw na usb.
Gdyby dało się zajrzeć do sterownika tego dziadostwa, to może byłoby jakieś podobieństwo z innymi sterami myszek i tabletów, bo urządzenie inne, ale zasada działania taka sama.
Ta druga firma, o której pisałeś też wesoła jest wesoła, ściągnąłem z ciekawości "ster", i wyszedł 400MB pliczek bin.
Mam wrażenie, że ktoś w u tych producentów na głowę upadł.
Ostatnio edytowany przez Jacekalex (2014-01-01 15:26:50)
Offline
Dostęp do sterownika tego urządzenia mam, ale kompilującego się tylko dla jąder <= wersji 3.2
Wiesz, mam świadomość, że WIELKA firma Qomo, to dwóch gośći w USA, którzy zlecają chińczykom zrobienie tablicy interaktywnej, której budowa i zasada działania jest mega prosta. Potem nalepiają naklejjkę QOMO, dodają marketing i sprzedają w przedszkolach i szkołach na całym świecie jako sprzęt na miarę przyszłego wieku.
Myślę, iż w teorii powinno być bardzo duże podobieństwo do innych sterowników myszek. Zasada działania identyczna.
Offline
Nie wiem, jaki masz związek i interes w tych tablicach Qomo, ale jak on jest poważny, to chyba pisanie własnego steru Cię nie minie.
W tym sterze, co się kompiluje na max 3.2 pewnie jest API tej tablicy, pytanie na jakiej licencji.
Poza tym jajo 3.2 ma przed sobą ze 2 -3 lata jeszcze, to wersja longterm, także paniki nie ma, czasu trochę jest.
Offline
Interes mam tylko taki, że żona prowadzi zajęcia z angielskiego z wykorzystaniem tablicy interaktywnej. Nie sprzedaję tych tablic. Posiadamy tylko jedną i pech chciał, że właśnie owej nie-fajnej firmy.
W tej chwili na komputerze, do której podpięta jest tablica stoi Wheezy, więc problemu nie ma. Przez 2-3 lata właśnie. Ale myślę o przyszłości.
Offline
To pomalutku, aż do skutku, staniesz się opiekunem sterownika, bo jajo 3.12 to jest stan obecny, za pół roku/rok/dwa będzie już Linux-4.0, a za cztery lata....???
W miarę unifikacji sterowników i odchudzania objętościowego kernela będzie jeszcze niejedna rewolucja.
Objętość źródełek ma się zmniejszyć o 50%, więc szykuje się naprawdę niezła jazda. ;P
Np podsystem sieciowy, w jaju 3.13 pojawia się suport do [url=http://en.wikipedia.org/wiki/Nftables]Nftables[/url], a cały podsystem sieciowy zaczyna pomalutku migrować do formy osobnej wirtualnej maszyny działającej w przestrzeni kernela.
Podobna rewolucja jest w USB, udała się w mechanizmie INPUT (Evdev), w DRI czy KMS.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-01-02 15:33:49)
Offline
[quote=azhag](...)Poprosić o jasną deklarację, że ostatnią wersję sterownika udostępniają na wolnej licencji (najlepiej chyba "GPL v2 lub wyższa", żeby łatwo włączyć do jądra?). Lub odszukać wersję, dla której taką deklarację dali(...).[/quote]
Napisałem prośbę. Znając życie, będę musiał jeszcze kilkanaście maili wysłać, aby odesłali odpowiedź, ale jestem zdeterminowany.
Offline
W źródłach sterownika w README nie ma nic o licencji?
Jakiego programu z jakiejś korpo nie widziałem, to zawsze były ostrzeżenia, licencje, i podobne pogróżki.
Offline
Przynajmniej ja takowej wzmianki o licencji nie znalazłem (chociaż jest to wersja beta sterownika).
Publikuję owy sterownik za zgodą firmy QOMO:
[url]https://www.dropbox.com/s/o9jmytz2hbne3h5/board_driver.tar.gz[/url]
proszę się nie śmiać:)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00103 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.140.185.194' WHERE u.id=1 |
0.00062 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.140.185.194', 1732592930) |
0.00049 | SELECT * FROM punbb_online WHERE logged<1732592630 |
0.00047 | SELECT topic_id FROM punbb_posts WHERE id=249861 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=22085 ORDER BY posted |
0.00058 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22085 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00117 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22085 ORDER BY p.id LIMIT 0,25 |
0.00086 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22085 |
Total query time: 0.00547 s |