[rešeno] Retrolink Atari to USB

Zdravo!
Kupil sem adapter Atari joystick na USB.

image

Na windows dela normalno, na ubuntu pa ne delata ukaza za GOR in LEVO. Našel se rešitev (driver), problem pa je, da sem prebutast, da bi jo znal uporabiti.

Tukaj je driver:

https://github.com/robmcmullen/hid-atari-retrobit

Kaj naj to inštaliram step-by-step?

Zdownloadal sem te datoteke:

Makefile
README.rst
hid-atari-retrobit.c
installdriver.sh

v mojo $HOME/Downloads mapo, zdaj pa ne vem kaj z njimi. Na strani so neka navodila, pa so preveč PRO za take kot sem sam.

Imam tudi druge USB naprave priključene, tipkovnico in miša, ampak če prav razumem to moti samo pri testiranju.

Prosim za pomoč, kaj naj vtipkam v terminal, da se bo reč inštalirala?
«1

Komentarji

  • vse lepo piše na strani v readme datoteki pod "usage" (uporaba):
    Compile with:
    # make


    The usbhid module appears to handle all USB IDs if it's already loaded, so for testing you must remove it first:
    # rmmod ./hid-atari-retrobit.ko; rmmod usbhid; insmod ./hid-atari-retrobit.ko ; modprobe usbhid


    If you have no other USB input device, your favourite paddle just now works !

    # jstest /dev/input/js0

    Pressing the up/left key should returns the value -32767.

    However, if you have any USB input device plugged in, such as a simple USB keyboard, the USB hid-generic driver binds the paddle before the retrobit driver. You have to unbind the adapter from usbhid. Download and execute the following script.

    # sudo ./installdriver.sh
    tule pa navodila kako se source sestavi: https://help.ubuntu.com/community/CompilingEasyHowTo

    v tem primeru je potrebno imeti samo nameščeno pravo programsko opremo za compile in potem se sledi navodilom avtorja gonilnika. pa ne pozabit prej namestit morebitnih odvisnih datotek.
  • Delno mi je uspelo:

    image

    V direktorij se je ustvarilo nekaj novih datotek:

    image

    Ker uporabljam USB tipkovnico in miša, moram pognati še:
    sudo ./installdriver.sh
    vendar dobim napako:
    Command not found
    Kako bi lahko tile popravil?
  • lahk probaš
    chmod +x installdriver.sh

    in nato še
    sudo bash installdriver.sh
  • Super! Dela! Hvala!

    Imam pa še eno vprašanje:

    Pred inštalacijo sem po tutorijalu na linku, ki ga je posredoval gregor3000, inštaliral naslednje:


    sudo apt-get install build-essential checkinstall
    sudo apt-get install cvs subversion git-core mercurial


    Paketi so težki kar 130MB. Sicer se sliši malo, vendar imam za ta emulator posebno napravico, ki pa ima miniaturen SSD in je vsak MB odveč.

    Kako bi lahko inštaliral samo najnujnejše pakete? -no-install-recommends ponuja nespremenjeno velikost inštalacije.

    Poskusil sem samo z


    sudo apt-get install make


    pa ni OK. Inštalacija javlja error. Kako ugotovim, kateri paketi so nujni za ta proces?
  • Ko enkrat prevedeš program, lahko te pakete pobrišeš. Načeloma bi pa moral potrebovati samo build-essential.
  • Hm, sem se malo prenaglil. Ko računalnik resetiram, ne dela več.
    Ponovno poram pognati:

    chmod +x installdriver.sh
    sudo bash installdriver.sh


    potem pa spet dela. Je mogoče kako to inštalirati trajno?
  • Poskusil sem z


    sudo leafpad /etc/rc.local
    chmod +x ~/driver/installdriver.sh
    sudo bash ~/driver/installdriver.sh


    pa ne gre. Uporabil se še

    sudo visudo
    administrator ALL = NOPASSWD: ~/driver/installdriver.sh


    Brez razlik. Če pa potem "peš" zaženem v terminalu

    chmod +x installdriver.sh
    sudo bash installdriver.sh


    pa dela kot mora.
  • Ne..to ne bo šlo. Dodaj skompajlan driver da se naloži ob zagonu..

    torej v rc.local dodaš nekaj v smislu

    sudo insmod /pot/do/hid-atari-retrobit.ko
  • sem dodal

    sudo insmod ~/driver/hid-atari-retrobit.ko


    Ni šlo. Sem poskusil še z

    insmod ~/driver/hid-atari-retrobit.ko


    in

    sudo visudo
    administrator ALL = NOPASSWD: ~/driver/hid-atari-retrobit.ko


    pa tudi ni :(
  • no dej zdaj še enkrat probaj ampak brez tilde in z absolutno podano potjo do driverja :)

    torej brez ~ ampak /home/mattithyahu/driver/hid-blabla.ko
    pa dej še spodaj v novo vrstico modprobe usbhid

    p.s. pa ne na pamet pisat ukaze..
  • Tudi s polno potjo ga ne zazna, dokler ne poženem

    chmod +x installdriver.sh
    sudo bash installdriver.sh


    Dodal sem tako:

    sudo insmod /home/mattithyahu/driver/hid-atari-retrobit.ko


    pred

    exit 0
  • pa brez sudo? in z dodanim
    modprobe usbhid
    pod insmod vrstico ?
  • Odlično! Dela! Hvala!

    ...


    ampak... :)

    dela samo v primeru, da je adapter priključen že ob zagonu računalnika.

    Sem brskal in našel neke vodiče, kako zagnati ukaze ob priključitvi naprave v USB. Bom poskusil se kaj znajt, čeprav vem, da se mi bo zatikalo na polno, glede na to, kakšen nOOb sem še. Vodič:

    http://serverfault.com/questions/399698/execute-a-command-when-a-device-is-connected-via-usb

    Bi pa dodal ta ukaza:

    chmod +x /home/mattithyahu/driver/installdriver.sh
    sudo bash /home/mattithyahu/driver/installdriver.sh


    Je /etc/udev/rules.d prava pot, da začnem dalje? Tolk da ne bom glih spet en teden brcal v temo...
  • Tako...potrebuješ udev pravilo (pravilno napisano drugače ne bo delovalo) in nato pa uporabiš https://github.com/robmcmullen/hid-atari-retrobit/blob/master/installdriver.sh 5. in 6. vrstico.. brez ./ ampak z absolutno potjo do gonilnika
  • mattithyahu Član
    uredil/-a 11. August, 2014
    Malo se je spet zataknilo.

    V /etc/udev/rules.d sem dodal novo pravilo 100-joy.rules in vanj zapisal:

    ACTION==\"add\", ATTRS{idVendor}==\"1292\", ATTRS{idProduct}==\"4154\", RUN+=\"/home/mattithyahu/driver/device.sh\"


    Ustvaril sem skripto device.sh, v katero sem zapisal:

    #!/bin/sh 
    # Mount device on udev 'ACTION==add'
    rmmod /home/mattithyahu/driver/hid-atari-retrobit.ko; rmmod usbhid;
    insmod /home/mattithyahu/driver/hid-atari-retrobit.ko ; modprobe usbhid;


    ID naprave je pravilen, saj jo zazna, ko jo priključim v USB. Vem, da jo zazna po tem, ko se začne miška zatikati in ventilator CPU vrteti na polno, kot da je obremenjen. Ko iztaknem napravo je vse spet OK z CPU in nič se ne zatika. Se pa naprava ne pojavi več med napravami v emulatorju, kot da je ni.

    Najverjetneje ni kriva skripta. Sem jo preimenoval, da jo rules ne najde, pa se vseeno miška zatika. Sem kaj čudnega naredil v rules?

    Prosim za pomoč.
  • mattithyahu Član
    uredil/-a 13. August, 2014
    Izbrisal sem vrstice v rc.local, tako da zdaj z zatikanjem ni več težav. Uporabil bom samo rules in skripto za to napravo, mislim da bi moralo delovati.

    Problem je očitno vseeno z mojimi rules. Sem poskusil ustvariti preprosto skripto, ki deluje, ko jo direktno poženem iz terminala:

    #!/bin/bash
    echo 'Hello World!' >>\"/home/<username>/Desktop/udev.out\"
    exit


    Rules je žal ne zažene. Poskusil sem še:

    ACTION==\"add\", KERNEL==\"js0\", SUBSYSTEM==\"input\",  ATTRS{idVendor}==\"1292\", ATTRS{idProduct}==\"4154\", RUN+=\"/home/mattithyahu/driver/helloworld.sh\"


    Pa ni nič :(
  • Nekaj uporabnih linkov..

    https://help.ubuntu.com/community/UsbDriveDoSomethingHowto

    na dnu strani je primer pravila udev..

    http://askubuntu.com/questions/82470/what-is-the-correct-way-to-restart-udev

    kako ponovno zagnat pravila udev brez ponovnega zagona

    http://reactivated.net/writing_udev_rules.html
    in še zadnja povezava pa je o podrobnostih pisanja pravil....
  • Hvala za linke! Mi je uspelo definirati napravo:

    ACTION==\"add\", SUBSYSTEMS==\"input\", ATTRS{name}==\"INNEX ATARI Controller USB\", RUN+=\"/home/mattithyahu/driver/helloworld.sh\"


    Tolk, če se bo še kdo mučil s tem. Sem pa našel lastnosti naprave ne na /dev/input/js0 temveč /dev/input/js1.

    Problem pa imam še vedno s skripto za driver. Če dovolim, da jo avtomatsko požene udev pravilo, se začne računalnik zatikati.

    #!/bin/bash
    # Mount device on udev 'ACTION==add'
    /home/mattithyahu/driver/installdriver.sh
    exit


    Če pa poženem"peš" iz terminala, je pa vse OK in deluje:

    sudo bash /home/mattithyahu/driver/installdriver.sh


    Sem poskusil še morje variant, pa ne znam. Kaj je narobe?
  • ko se začne zatikati poženi
    dmesg
    pa poglej če ti izpiše kaj uporabnega..

    pa glede na to da potrebuješ sudo pri zagonu skripta mogoče če spremeniš nekaj v smislu
    /usr/bin/sudo -u mattithyahu /bin/bash /home/mattithyahu/driver/installdriver.sh

    ukaz RUN..ne vem čemu si spisal še en skript za zagnat skript :)
  • mattithyahu Član
    uredil/-a 18. August, 2014
    Mnja. Zdaj vem, da se brez dvoma zatika zato, ker ustvarim loop. Skript installdriver.sh unbinda vse usb in ponovno naloži. Ko naloži pa se znova požene installdriver.sh, zaradi rules.d in tako ustvari neskončni loop. Kakorkoli obrnem se vedno vrnem v loop, če dodam pravilo za remove v rules.d.

    Torej deluje za avtomatski zagon installdriver.sh, ampak samo, če napišem skripto za zagon skripte (installdriver.sh ustvari mapo /sys/bus/hid/drivers/atari/)

    #!/bin/bash
    # Mount INNEX ATARI Controller USB
    if [ ! -d \"/sys/bus/hid/drivers/atari/\" ]
    then
    /home/mattithyahu/driver/installdriver.sh
    fi
    done


    Problem ostaja, če iztaknem napravo in ponovno vtaknem (brez ponovnega zagona računalnika), ker potem več noče zagnati pravila zaradi if stavka, ker je mapa atari že usvarjena.

    Pravilo, ki bi delovalo pri obstranitvi naprave sicer lahko dodam in deluje, vendar potem več ne deluje "add" v rules.d, ker s tem avtomatsko ustvarim tisti loop.

    ACTION==\"add\", SUBSYSTEMS==\"input\", ATTRS{name}==\"INNEX ATARI Controller USB\", RUN+=\"/home/mattithyahu/driver/mount.sh\"
    ACTION==\"remove\", SUBSYSTEMS==\"input\", ATTRS{name}==\"INNEX ATARI Controller USB\", RUN+=\"/home/mattithyahu/driver/unmount.sh\"


    Zdanja ideja, ki jo imam je ta, da bi odstranil "remove" pravilo in ustvaril "nekaj" (v rules.d ali v rc.local al kaj vem kje), ki bi recimo vsake 10 sekund preverilo, ali je naprava še priključena, in če ni, bi pognalo skript:

    #!/bin/bash
    # Unmount INNEX ATARI Controller USB
    rm -rf /sys/bus/hid/drivers/atari
    done


    Kakšen predlog? Sem že nekaj brskal, pa ne najdem pravega odgovora...
Za komentiranje se prijavite ali pa se vpišite.