Press "Enter" to skip to content

Oqtadrive – zaujímavý hardwarový emulátor Sinclair Microdrive

Napriek tomu, že už nejaký ten piatok vlastním vDriveQL, zaujal ma ďalší emulátor Microdrive – Oqtadrive. Je to relatívne jednoduchý hardware postavený na Arduine Nano a je zaujímavý tým, že je obojživelný. Dá sa používať s QLkom, ale aj s IF1 a ZX Spectrom. Najjednoduchší variant sa ovláda z počítača cez USB kábel, alebo si môžete postaviť zložitejšiu standalone verziu, ktorá sa ovláda cez Wifi, pohodlne pomocou webového rozhrania. Tá sa mi zapáčila a tak som si ju postavil. Toto je návod ako na to.

Oqtadrive ma zaujalo aj tým, že je postavené z minima súčiastok. Okrem hlavného plošáku potrebujete len Arduino Nano, Raspberry Pi Zero W, DC-DC prevodník, level shifter, a nejaké smetie ako odpory, diódy a pinové lišty. Pozor, lacné je to len zdanlivo. RPi aj Arduino sú dnes za šialené ceny a keď k tomu prirátate sumy za dosku, prevodník, level shifter a nejakú microSD kartu, kľudne sa dostanete na nejakých 60-70 Eur. Ale myslím, že to za to stojí.

Hneď na úvod upozorňujem, že Oqtadrive NIE JE kompatiblilné s vMAP a vDriveQL od vRetro Design. Na domovskej stránke to doteraz nie je uvedené a na stránke projektu to autor doplnil, až keď som na to založil issue, lebo mapping Oqtadrive na mojom QLku s vMAPom sa chová podivne a na vine je práve vMAP. Trocha sa k tomu vrátim neskôr. Ale poďme už k samotnej stavbe.

Oqtadrive
Osadený plošáčik

Keďže Raspbery Pi Zero W je dnes Unobtainium, musel som sa prispôsobiť. Alternatívou odporúčanou priamo autorom je Banana Pi M2 Zero, ktoré punúka +/- to isté ako RPi, ale na rozdiel od RPi sa ešte dá zohnať. Aj mne sa to podarilo a dokonca som ho kúpil tu na Slovensku a ešte lacnejšie, ako sa dá kúpiť na Aliexpresse. Okrem level shiftera (ktorý mi dodal Ikon) som mal všetko ostatné v šuplíku, takže poskladanie bolo otázkou pol hodiny. Nie je tam žiaden zádrheľ a osadzovací plánik je zverejnený na PCBWAY. Ja som si nakoniec neosadil Adafruit 1201 Motor, lebo má otravný zvuk. Čakal som niečo prívetivejšie. Hotové Oqtadrive zatiaľ nedávajte do krabičky ak nejakú už máte, lebo ho ešte potrebujeme oživiť.

Oqtadrive
Hlavné komponenty – level shifter, Arduino a Banana Pi M2 Zero

Ako prvé si potrebujeme pripraviť SD kartu a k tomu je potrebný image s operačným systémom. Originálny návod ponúka predpripravený image Armbianu, ktorý by sa po spustení mal sám skonfigurovať, ale mne nefungoval. Ani po hodine sa nič nedialo. Pri pokuse prihlásiť sa do neho, aby som skontroloval čo sa deje, sa operačný systém sám od seba reštartoval, takže som to nedokázal opraviť. Našťastie je na stránkach Oqtadrive zverejnený aj celý postup, takže som šiel podľa neho. Bohužiaľ v ňom bola chyba a najprv mi Oqtadrive nefungovalo. Ale nahlásil som to a autor to takmer obratom opravil, takže aktuálny postup “…and the Hard Way” z domovskej stránky vám vyprodukuje funknčné Oqtadrive. Každopádne som si to spísal aj sem.

Oqtadrive
Všetko zacvakané do seba a osadené v spodnom dieli krabičky.

Takže sa presuňme k inštalácii. Hotové Oqtadrive pripojíme ku QLku, alebo ZXS s IF1. Na úvod potrebujeme nejaký operačný systém. Autor software Alexander Vollschwitz zvolil Armbian a ja som nemal dôvod to meniť. Len škoda, že pre Banana Pi nie je oficiálny build priamo od Armbianu. Môžete si ho však stiahnuť z domovskej stránky Banana Pi, alebo aj odo mňa (cca 400 MB), keby náhodou domovský link vykapal. Image vyklopte na rýchlu microSD kartu, založte ju do Banana Pi, pripojte si klávesnicu (budete potrebovať OTG adaptér) a monitor cez miniHDMI<>HDMI kábel. Zapnite QL / ZXS, nechajte Armbian naštartovať a prejdite úvodným nastavením, ktoré si sám vypýta. Je potrebné ho pripojiť k vašej WiFi, pretože nasledujúci inštalačný prosces vyžaduje internet. Ako bežného užívateľa si nastavte username pi a heslo si dajte oqtadrive. Tak to odporúča pôvodný návod. Keď sa vám zobrazí prompt, aktualizujte operačný systém pomocou príkazov apt update a potom apt upgrade.

Potom treba doinštalovať gawk a strace pomocou apt install gawk strace, a užívateľa pi pridať do sudoers tak, aby príkaz sudo nepýtal heslo. Pomocou príkazu visudo doplňte na koniec konfiguráku parameter pi ALL=(ALL) NOPASSWD:ALL a zmenu uložte. Ako posledná prerekvizita je zapnutie sériového portu uart3, cez ktorý budeme komunikovať s Arduinom. To môžete urobíť cez konfiguračný nástroj armbian-config, ale podľa mňa je rýchlejšie manuálne doplniť na koniec konfiguráku /boot/armbianEnv.txt parameter overlays=uart3, lebo armbian-config robí presne to isté. Potom Banana Pi reštartujte a po reštarte sa prihláste pod novým užívateľom pi. A teraz konečne môžeme pristúpiť k inštalácii obslužného software. Počíta s tým, že je umiestnený v domovskom adresári užívateľa pi, takže sa pred inštaláciou uistite, že ste v adresári /home/pi.

Páči sa mi ako to Alexander vymyslel. Celý proces inštalácie sa obsluhuje pomocou jediného Makefile, takže si ho stiahneme:
curl -fsSL https://codeberg.org/xelalexv/oqtadrive/raw/master/hack/Makefile -o Makefile

A hneď za tým si vytvoríme adresár oqtadrive a doňho si stiahneme konfiguračný súbor:
mkdir oqtadrive
curl -fsSL https://codeberg.org/xelalexv/oqtadrive/raw/master/hack/unattended/bananapi/config.h -o oqtadrive/config.h

A teraz už nastupuje Makefile. Cez neho si nainštalujeme oqtactl binárku, web UI, toolkit pre Arduino arduino-cli, pomocou ktorého naflashujeme firmware do Arduina v Oqtadrive:
make install

Utilita avrdude z balíka arduino-cli za normálnych okolností komunikuje cez USB, my ale máme Arduino pripojené cez GPIO a uart3, takže malým patchom prinútime avrdude, aby komunikoval cez náš uart3:
make patch_avrdude

Teraz môžeme skompilovať firmware a naflashovať ho do Arduina. Ja mám staršie Arduino Nano, takže oproti pôvodnému návodu je potrebné do príkazu doplniť ešte parameter OLD_NANO=y:
PORT=/dev/ttyS3 BAUD_RATE=500000 OLD_NANO=y RESET_PIN=16 make flash

Následne potrebujeme zabezpečiť, aby sa služba pre Oqtadrive spúšťala automaticky s každým štartom operačného systému. Raspbian i Armbian používajú systemd, takže tu som našťastie nemusel maturovať a opať funguje štandardný príkaz z pôvodného postupu:
PORT=/dev/ttyS3 BAUD_RATE=500000 make service_on

Môžete si skontrolovať či služba beží (a takto sa to kontroluje aj v prípade, že vám v budúcnosti Oqtadrive začne haprovať):
systemctl status oqtadrive.service

A na záver inštalácie si popíšeme ešte jeden príkaz. Ten teraz nepoužijeme, lebo máme aktuálnu verziu všetkého, ale do budúcna nám bude slúžiť na aktualizáciu firmware i software. Jednoducho sa hocikedy za jazdy pripojíme cez ssh k Banana Pi a spustíme ho:
PORT=/dev/ttyS3 BAUD_RATE=500000 OLD_NANO=y RESET_PIN=16 make upgrade.

Ak vám všetko zbehlo bezchybne, mali by ste mať Oqtadrive oživené a od tohto okamihu už nepotrebujete mať pripojený k nemu monitor a klávesnicu a môžete si ho zakrytovať. Je k nemu krabička, ktorú si viete vytlačiť na 3D tlačiarni, alebo si ho môžete zabudovať aj do pôvodného case od externého microdrive.

A ako sa to celé používa? Jednoducho idete cez browser na vašom počítači na adresu Oqtadrive služby (zistíte buď na routri, alebo si v nastaveniach Armbianu/Banana PI prideľte statickú IP adresu) http://ip.adresa.vaseho.Oqtadrive:8888 a otvorí sa vám webové rozhranie k Oqtadrive. Viete si v ňom nahrávať MDV pre QL a MDR, TAP, Z80 a SNA súbory do hociktorej z ôsmich virtuálnych microdrive. Áno, vidíte dobre – Oqtadrive si pre ZXS dokáže do MDR skonvertovať aj snapy a tapky. Pri tapkách sú samozrejme štandardné obmedzenia (len BASIC loader, kde treba upraviť príkazy LOAD pre microdrive), ale snapy chodia bez úprav a to je pre hráčov úplná pecka. Súbory samozrejme viete do virtuálnych microdrive uploadovať priamo z web rozhrania z vášho počítača. No a vďaka tomu, že vďaka WiFi viete mať k dispozícii aj internet, Oqtadrive vie sťahovať aj súbory zo ZXDB. Vyzerá to tak, že Alexander na tom aktívne pracuje, takže podľa mňa budú možnosti ešte pribúdať. Keď pri ZXS odmyslím tú strašidelnú syntax ovládacích BASICových príkazov, považujem to za výborné moderné zariadenie a pri QLku to je naozaj kvantový skok v používaní. Máte na pár klikov dostupné dáta, programy, hry bez zbytočnej diskotéky s SD či CF kartami.

Oqtadrive
Hotová zostava, už len zakrytovať.

Tým sa však možnosti nekončia a v obmedzenej miere sa dá Oqtadrive ovládať aj BASICovými príkazmi priamo zo ZXS a QL! Súbory si môžete ukladať aj lokálne do repozitára priamo na SDkartu v BananaPI, napríklad do adresára /home/pi/repo. Potom treba upraviť unit file /etc/systemd/system/oqtadrive.service tak, že za príkaz ExecStart=/home/pi/oqtactl serve -d /dev/ttyS3 -b 500000 dopíšete ešte –r /home/pi/repo, takže celkový príkaz bude vyzerať takto: ExecStart=/home/pi/oqtactl serve -d /dev/ttyS3 -b 500000 -r /home/pi/repo. Po najbližšom štarte daemona máte dostupný tento lokálny repozitár pre prípad, že ostanete bez WiFi. Súbory z neho si potom nahrávate priamo na ZXS, či QL, cez príkaz LOAD. Repozitár si viete napĺňať aj bez vyberania SD karty cez ssh a príkaz scp. Ale nejdem sa tu o tom rozpisovať, všetko je v manuáli.

Pre mňa však dokončenie Oqtadrive malo trpkú príchuť. Ako som spomínal v úvode, na stránkach nekopmatibilita s vMAPom nebola uvedená. V QLku sa mi mapovanie Oqtadrive bije s vMAPom, takže mi to robilo psie kusy. Nijakým spôsobom som sa k Oqtadrive nevedel dostať cez MDV1_, MDV2_ a MDV3_. Nakoniec som to nejako rozchodil a s nastavením VMAP 1 mám Oqtadrive prístupné aspoň cez MDV4_ až MDV8_ takže sa dá využiť aspoň na pohodlný prenos dát na CFkartu, ktorú mám zastrčenú v TDI. Šachovaním s nastavením vMAPu, či s mapovaním v rozhraní Oqtadrive sa to dalo už len zhoršiť. Bohužiaľ to nie je to, čo som si predstavoval. Tŕňovú korunu tomu nasadilo ešte aj moje IF1, ktoré je asi nejako nakopnuté, pretože ZXS nedokáže z Oqtadrive nič prečítať. V debug logu Oqtadrive je vidieť, ako len cyklicky dookola skúša čítať všetky sektory. Snáď sa mi podarí to vyskúšať u Ikona s iným IF1 a ak to pôjde, tak budem musieť zdiagnostikovať to moje. A keďže s QLkom to chodí, problém je najskôr v mojom IF1.

Oqtadrive
Hotové Oqtadrive.

Čo dodať na záver? Oqtadrive sa mi páči. Ľahko sa dá postaviť, ľahko sa ovláda a nepotrebujete žiadne prenositeľné médium na to, aby ste dostali do QL či ZXS programy, hry a dáta. Pri ZXS si ho vďaka otrasným BASICovským príkazom viem predstaviť len ako zaujímavosť, či z nadšenia zo zaujímavého hardware. Ale pri QLku má výborné využitie. Ak ešte nemáte QL-SD, či vDriveQL a zvažujete nejaké moderné záznamové zariadenie, Oqtadrive môžem len odporučiť. Vyjde lacnejšie ako vMAP+vDriveQL a má podľa mňa lepšie možnosti.

5 Comments

  1. Great write up, very detailed! It’s a pity the installer image didn’t work for you. Just wonder what caused that to fail. It makes installation very easy. A few small tips: You can run upgrades also from the web UI, no need to ssh into the box. The strength of the rumble motor can be configured, so it should be possible to find a more mellow sound. The repo folder can also be mounted via WebDAV, and even be managed from within the web UI.

    I hope you’ll have a lot of fun with the OqtaDrive. Happy hacking!

  2. z00m z00m

    Installer image is working now. I must have hit some kind of repo outage before, because there were a dozen 404s in the log. But I like the new Armbian image. It seems to be more tuned. It was worth to use it.

  3. Great! BTW, on Monday, Feb 6, there was a large scale repo outage for Ubuntu repos, maybe Debian repos were affected as well. Hit me hard at work…

  4. admin admin

    Hello, it looks interesting. I will look at it, for sure 😉

Leave a Reply

Your email address will not be published. Required fields are marked *