tiistai 3. syyskuuta 2019

Glue älylukon rajapintojen tutkimista

Tuossa aikaisemmassa postauksessa https://omakotikotitalomme.blogspot.com/2019/09/etaohjattava-glue-alylukko-wifi.html asensimme älylukon varaston oveen. Ja siinä vähän harmittelin, ettei valmistaja ole virallisesti julkaissut avointa REST API:a, että voisin itse ohjelmallisesti lukkoa ohjata.

Ekana tiputamme Glue lukon Android paketin https://www.apkdecompilers.com/-sivustolle, ja katsomme löytyykö paketin sisältä jotain mielenkiintoista, jolla voisimme saavuttaa yhteensopivuuden curl ohjelman kanssa.
root@jonni-ThinkPad-W520:~/gluehome# grep https.*api apk/*
Binääritiedosto apk/resources\classes.dex täsmää hakuun
apk/sources\com\gluehome\gluecontrol\h.java:        aVar.a("https://api.gluehome.com/api/");
apk/sources\com\gluehome\gluecontrol\h.java:        return new g.s.a().a("https").d(str.equals("dev") ? "gluebackend-tc-api.azurewebsites.net" : "api.gluehome.com").e("api").e(CoreConstants.EMPTY_STRING).c();
apk/sources\com\google\android\gms\b\ix.java:        return new Builder().scheme("https").path("//pagead2.googlesyndication.com/pagead/gen_204").appendQueryParameter("id", "gmob-apps-report-exception").appendQueryParameter("os", VERSION.RELEASE).appendQueryParameter("api", String.valueOf(VERSION.SDK_INT)).appendQueryParameter("device", u.e().e()).appendQueryParameter("js", this.f8897e.f7780b).appendQueryParameter("appid", this.f8896d).appendQueryParameter("exceptiontype", cls.getName()).appendQueryParameter("stacktrace", stringWriter.toString()).appendQueryParameter("eids", TextUtils.join(",", df.a())).appendQueryParameter("exceptionkey", str).appendQueryParameter("cl", "135396225").appendQueryParameter("rc", "dev").toString();

Bingo, tuolta löytyi, että Android applikaatio käyttää API rajapintanaan "https://api.gluehome.com/api/", ja näyttääpä heillä jääneen kehitysympäristön azure sitekin koodiin mukaan, mutta sen voimme ignoroida. Joten keskitymme tuon api urlin service rajapinnan tutkimiseen. Ja sitten seuraava luova greppi:
root@jonni-ThinkPad-W520:~/gluehome# grep "o(a = \"" apk/*Service*
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations/{id}/Activate")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AutoUnlocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AutoUnlocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Invites")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs/{id}/Commands")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Accesses")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Accesses")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AccessSchedules/")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "AccessSchedules/")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations/{id}/Images")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations/{id}/Images")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "LockEvents")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "LockEvents")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Locks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs/{id}/PairLocks")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Hubs")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "RegisterPushNotifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "RegisterPushNotifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "UserRegistrations")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "SecurityQuestions")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "SecurityQuestions")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/Icons")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/Icons")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/modifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Users/{id}/modifications")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "ResetPassword")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "ResetPassword")
apk/sources\com\gluehome\backend\glue\GlueHomeService.java:    @o(a = "Validate")

Ja tuossahan lista sitten majaileekin, ja sorsaa tutkimalla näkee syökö se sisäänsä GET, PUT tai DELETE metodia. Ja tavoitteenahan meillä on curlilla päästä ovea lukitsemaan ja avaamaan. Sitten luomme loginpass-tiedoston:
machine api.gluehome.com login <email> password <password>

Ja yläpuolella olevaa apilistaa kun luemme, niin kaipaamme lukon tai hubin {id} arvoa aika monessa tapauksessa. Ja kaikki wifi hubissa olevat linkatut lukot saamme /Hubs-komennolla (GET).
root@jonni-ThinkPad-W520:~/gluehome# curl -k -H "Content-type: application/json" --netrc-file loginpass https://api.gluehome.com/api/Hubs/ | jq '.[].LockIds[], .[].Id'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   405  100   405    0     0    605      0 --:--:-- --:--:-- --:--:--   639
"11111111-1111-1111-1111-111111111111"
"22222222-2222-2222-2222-222222222222"

Ja sieltähän lukon id pullahti (lukko vaihdettu ykköseksi ja hubi id kakkoseksi ihan vaan blogin takia). Ja tuon tiedon perusteella voimme jo lukkoa ohjata "Hubs/{id}/Commands"-APIlla. Tai kaivetaan vielä tuosta rajapinnasta tiedot ulos.
root@jonni-ThinkPad-W520:~/gluehome# cat "apk/sources\com\gluehome\backend\glue\HubCommandRequest.java"
package com.gluehome.backend.glue;

import com.google.a.a.c;
import java.util.UUID;

public class HubCommandRequest {
    public static int COMMAND_HUB_FIRMWARE_UPDATE = 4;
    public static int COMMAND_LOCK = 1;
    public static int COMMAND_LOCK_FIRMWARE_UPDATE = 3;
    public static int COMMAND_UNLOCK = 0;
    public static int LOCK_COMMAND_LIST_UPDATE = 5;
    @c(a = "HubCommand")
    public int hubCommand;
    @c(a = "LockId")
    public UUID lockId;
}

Tuosta näkee, että kyseinen API haluaa POST komenossa formissa kaksi parametriä, toinen on "LockId", johon siis pistämme juuri kaivamamme lukon ID:n ja toisena parametrinä "HubCommand", joka on INT. Ja intin arvot onkin tuossa mukavasti listattuna samalla, eli nollalla unlock ja ykkösellä lukkoon. Ja isommat numerot on sitten firmiksen päivityksia yms(joita emme tarvitse).

Ja sitten onko lopullisen testin aika, syötämme curlille formin tuossa muodossa ja katsotaan mitä tapahtuu.

root@jonni-ThinkPad-W520:~/gluehome# curl -X POST -k -d "LockId=11111111-1111-1111-1111-111111111111&HubCommand=0" --netrc-file loginpass https://api.gluehome.com/api/Hubs/22222222-2222-2222-2222-222222222222/Commands | python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   112  100    56  100    56     80     80 --:--:-- --:--:-- --:--:--   160
{
    "Id": "6550eb7c-5fe6-4dc5-8f0d-2dccaa077777",
    "Status": 1
}
root@jonni-ThinkPad-W520:~/gluehome# curl -X POST -k -d "LockId=11111111-1111-1111-1111-111111111111&HubCommand=1" --netrc-file loginpass https://api.gluehome.com/api/Hubs/22222222-2222-2222-2222-222222222222/Commands | python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   112  100    56  100    56     98     98 --:--:-- --:--:-- --:--:--   197
{
    "Id": "a95c39ec-2c47-4a0c-bb7b-3f154a4e00000",
    "Status": 1
}

Ja siellähän se möllöttää, varaston ovi aukesi ja meni kiinni, ja Androidiin tuli notifikaatiot myös komentojen onnistumisesta.

Disclaimerina, että koska REST API ei ole virallisesti avoin, niin valmistaja voi softapäivitysten välillä vapaasti sitä muutella, mutta "works for me". Samalla tässä pitää painottaa sen tärkeyttä, kun rekisteröitte tuota lukkoa, niin keksikää mahdollisimman pitkä ja uniikki salasana käyttäjätunnukselle, sillä jos se vuotaa, niin kuka vaan saa ovesi auki tietämällä sähköpostin ja salasanan. Muuten tuolla ei nyt nopealla silmäyksellä mitään hälyttävää löytynyt, datakanava on https:n päällä, joten siltä osin turvallinen. Näytti tuolla olevan muutama google mainos ja statistiikka urli, joten softa saattaa kerätä statistiikka, mutta niinpä taitaa about kaikki applikaatiot tehdä.

Niin ja tässä postauksessa ei mitään maailmaa mullistavaa uutta tietoa. Näin jälkeenpäin kun googlettaa, niin Gluehomen gitistä löytyy samat tiedot sorsia lukemalla, josta näkee esim, että miten betterylevel lasketaan (https://github.com/GlueHome/homebridge-glue/blob/master/index.js) ja hyvää lisälukemista aiheesta: Security evaluation of smart door locks.

Nyt kun pystyn REST rajapintaa itse kutsumaan, niin saatan tulevaisuudessa hankkia toisenkin lukon talon puolelle.

maanantai 2. syyskuuta 2019

Etäohjattava Glue älylukko wifi-keskittimellä

Tuossa kesällä oli Clasulla kivijalassa erikoistarjouksena Glue älylukot, jolloin opiskelijakortin vilauttamisen jälkeen taisi loppuhinnaksi muodostua noin 140e, niin oli pakko hankkia kun halvalla sai. Verkkokauppa.com:ssa sama on https://www.verkkokauppa.com/fi/product/14156/knckx/Glue-langaton-alylukko-wifi-keskittimella-hopea

Ja asennuskohteeksi valitsin varaston oven, sillä käyttöscenaariolla, jos tarvii esim. lähettifirmoille availla ovia jos tulee pakettia kun en ole kotona. Ja toinen syy varastoon pistämiseksi on se, että 'älylukoilla' on vielä hieman huono maine tietoturvan osalta. Joten tuota pitää tutkia hieman lähemmin, ennenkuin uskaltaa kotioveen pistää. Tästä onkin lupa odottaa jatkopostausta aiheesta, kun valmistaja ei ole public API:a toiminnallisuuteen julkaissut, niin taitaa edessä olla 'challenge accepted'-hetki, jos vaikka katsoo mitä vaatii oven avaaminen curlilla Linuxin konsolilla.

Lähtötilanteessa tuommoinen perus Abloyn lukkopesä, johon asennusta sitten ruvetaan suorittamaan.

Pyöritysnuppi ekana ruuvataan irti...

Jonka jälkeen ruuvataan Glue lukon aluslevy tilalle ja sovittemen kanssa sitten Glue laite paikoilleen.

Sitten vuorossa olikin Glue softan asennus Android puhelimeeni, jonka avulla lukko rekisteröidään ja calibroidaan. Jouduin tekemään calibroinnin pariin kertaan kun ekalla kerralla en osannut vääntää nuppia tarpeeksi auki. Ja wifi keskittimen kanssa hetken ihmettelin kunnes keksin, että varaston wlan ap:ssa oli dhcp:n dns asetukset vinossa. Lopulta kaikkiaan taisi vähän alle tunti mennä aloituksesta kun systeemi oli pystyssä.

Kun lopulta saa kaikki onnistuneesti conffattua, niin silloin näkyy puhelimesta iloisesti unlock ja lock napit, ja logitiedot historiasta.

Muutaman päivän testausten perusteella, unlock ja lock komennot joskus eivät mene täysin luotetusti läpi, vasta kun historia logissa näkyy eventti, niin silloin tietää menikö komento läpi. Mutta kun tuon tiedostaa, niin ei ole iso ongelma. Jossain vaiheessa on luvassa toinen postaus aiheesta, jossa koitetaan tutkia enemmän API ja/tai protokollatasoa toiminnallisuuden suhteen.

tiistai 25. kesäkuuta 2019

Commodore DIY: SyncFix64

Itselle kun vuosien varrella kertynyt muutamia halpoja kiina tft/lcd näyttöjä, jotka voisivat olla kivoja pikkunäyttöjä vanhoille Commodore tietokoneille. Ongelmana vain on, että nepat eivät synkkaanu noiden halpojen tft/lcd näyttöjen kanssa, joten kuva ei tule ruudulle.

Mutta joku on suunnitellut pienen piirilevyn, joka korjaa komposiitti-signaalin siten, että halvat tft/lcd näytötkin tunnistavat sen ja osaavat näyttää sen oikein.

https://www.hackup.net/tag/syncfix64/

Levy on aika pieni ja täynnä pintaliitoskomponentteja, vanhat ja raihnaiset ikänäkösilmäni tarvitsevat mikroskoopin apua noin pienien osien kolvaamiseen.

Onneksi LCD mikroskooppi oli isona apuna ja osat meni paikoilleen fluxin avulla nätisti:

Lopulta levy on valmis, ja seuraavaksi vuorossa lcd:n kotelon avaus.

Kotelon sisällä oli paljon tilaa ja kaapelirivistön vieressä oli vielä debug padit, josta oli helppo ryöstää 12V ja GND tolle apulevylle. Samoin keltainen signaalikaapeli kolvattiin irti ja pistettiin ton SyncFix64 levyn IN-reikään ja OUT-reikä taas yhdistettiin LCD:n alkuperäiseen keltaiseen reikään.

Levy meni kotelon sisään nätisti ja kuvatesti näyttää, että laite iloisesti tunnistaa C64sen signaalin ja näyttää kuvan OK. Tämä kääntyvä peruutuskameran näyttö taisi olla aliexpressista 13e kotiin kuljetettuna.

Seuraava vuorossa vielä muutaman lisälevyn kolvailu, kun minulla taisi joku 3-4 pikku TFT/LCD näyttöä olla laatikoiden pohjalla.

lauantai 8. kesäkuuta 2019

Tuulettimen korjaus

Kävi tuossa juuri, että yhdestä vanhasta Severin pöytätuulettimesta loppui pyörintä, kun propellin sisäosa oli murtunut muodottamaksi, jolloin moottorin tappi ei ottanut enää kontaktia propelliin. Joten otinpas käteen työntömitan ja suunnittelin korjaavan välikappaleen propellin ja tapin väliin.

Ekana kuvassa muodottamaksi haljennut takapuoli ja sitten kuva kun 3D printattu korjausosa on asennettu paikoilleen.


Moottorin pyörivä tappi istui tuohon täydellisesti, ja taas on yksi tuuletin kunnostettu.

tiistai 4. kesäkuuta 2019

Commodore DIY: C64/C128 Diagnoosi vermeet V1.3

Käsittelin aihetta jo vuosi sitten https://omakotikotitalomme.blogspot.com/2018/02/commodore-diy-c64c128-diagnoosi-vermeet.html

Nyt on aika uusintakierrokselle, kun tuo harness design on tyrhan monimutkainen ja joystick kaapeleiden kasaamisessa pinniliittimet on virhearkoja. Joten suunnittelin uuden optimoidun piirilevyn, jossa joystick kaapeleita ei tarvita ollenkaan.

Joten avasin Eaglen ja rupesin piirtelemään ja digitaalisella työntömitalla koitin katsoa joystick porttien etäisyydet toisistaan (nyt kun levyt on saapuneet, niin oli jopa onnistuneet mittaukset).

Ja tälläkertaa tilasin piirilevyt http://jlcpcb.com:sta, kun tätä kirjoittaessa sieltä saa tällähetkellä edullisimmin itse paneloidut levyt.

Samalla suunnittelin 3D printatut kotelot uusille piirilevyille, jolloin niiden kiinnitys ja irroitus helpottuu:

Kasauksen ja testauksen jälkeen, kaikki diagnostiikka harnesin testit menee läpi. Ja BOM (materiaalikustannukset) ovat puolittuneet ja kasaaminen on paljon helpompaa kun erillisiä joystick kaapeleita ei tarvitse tehdä.

lauantai 2. helmikuuta 2019

Serverikaapin päivitys: System X3850 X5

Sain serveriräkkiini uuden myllyn pyörimään (System X3850 X5). Tällä kertaa koneessa on kotikäyttöön ehkä jopa vähän liikaakin tehoa (64 loogista prosaria) ja muistia (512GB RAM, tai voiko koskaan olla liikaa?). Koneessa oli 4 SAS levya kiinni Raid5:na tarjoten vähän yli 800GB levyä. Joten marssin verkkokauppa.comin myymälään ja otin tiskiltä 4x 2TB BarraCuda sata levyjä mukaan. Ja piti minun myös ebaysta hommata neljä levy caddyä, kun tuon koneen mukana ei niitä tullut (https://www.ebay.com/itm/2-5-Inch-SAS-SATA-Server-HDD-Hard-Drive-Bay-Tray-Caddy-for-IBM-Drives-44T2216/262562862420)

Ja pikkuisen googlettamisen jälkeen sain levyt conffittua toiseksi Raid5 virtuaalilevyksi (bootissa F2 ja CTRL+H, jolla pääsi raidin biosiin). Joten nyt tuollakin Esxi koneella on yli 6TB kovalevyä virtuaalikoneita pyörittämään.

Kuvapornoa uuden koneen vSphere käliltä:

Ja vertailun vuoksi HP ProLiant summary:

Noiden kahden koneen avulla, minulla on enemmän pilvipalvelua kuin näillänäkymin tulen koskaan tarvitsemaan. Luultavasti voin pitää toista Esxi konetta ihan vaan backup koneena, jolla voi varmistaa, että vaikka yhden serverin rauta hajoaisi, niin saan virtuaalikoneet ajoon kohtuu nopeasti backupista.

Nyt rupeaa räkki olemaan aika täynnä ja varasto pysyy lämpimänä vaikka pitäisi talvella ikkunaa auki. :-O

sunnuntai 13. tammikuuta 2019

Kolvauspisteen päivitys: uusia leluja

Viimeisen puoli vuotta on ollut työhuoneen päivitysprojekti menossa. Lundian kaapit on maalautettu valkoiseksi ja nytten sain viimein kolvauspisteenkin päivitettyä työkaluja helpottamaan ikänäköistä harrastajakolvaajaa.


Ikeasta usb ledilamppu (Hårte 14.99e) lisävaloa antamaan. Silikooni pöytämatto ("Silicone Pad Desk Mat soldering repair" ebay search on alle 10e).

Elektroninen mikroskooppi lcd näytöllä (600x suurennus) ja microsd kortille tallennusmahdollisuudella (Gearbest.com black friday tarjous). Mikroskooppi on todella kätevä jos pitää tarkistaa piirilevyltä, että onko joku juotos esim oikosulussa. Ja "FA-400 smoke absorber"(Ebaysta about 25e) vetämään kolvaussavut aktiivihiilisuodattimen läpi.

Ja samoin hankin aliexpressistä vielä toisen kolvinkin tuon hyvin palvelleen TS-100:n (TS-100 review) rinnalle. Quicko T12-942 on Hakko yhteensopiva klooni (Hakko teriä voi käyttää suoraan)(review). Vielä en ole päättänyt kumpi noista on parempi, vähän eri muotoisia teriä olen pitänyt, joten kumman valitsee riippuu siitä, että mitä kolvaa. Tällähetkellä TS-100 on vielä suosikkini. Taustalta voi myös bongata perus diy komponenttimittauslaitteen, labrapoweria yms skooppia.

Takaseinälle printtasin 3D printterillä S-koukkuja (https://www.thingiverse.com/thing:1149550), joita voi ripustaa Ikean perus roikotustankoon. Sai kätevästi kasan säätämistyökaluja roikkumaan järjestykseen. Joutostinarullille olen myöskin 3D printannut telineen (https://www.thingiverse.com/thing:960103. Ja Lidl:ssä oli tarjouksessa akkukäyttöinen langaton kuumaliimapyssy, joten semmoisenkin hankin ja käteväksi on osoittautunut.

Takavasemmalla on myös desoldering station (tme.eu), joka on semmoinen ostos, että harmittaa miksi en jo 5 vuotta sitten ole hankkinut, kun elämä (ja komponenttien irroittelu) on niin paljon helpompaa sen kanssa ja sen yläpuolella UV-valotuslaite eeprommien tyhjäämiseksi.

Onkos lukijakunnassa, jollain joku kätevä työkalu, jota ilman ei tule toimeen ja jonka minun kannattaisi hankkia elämää helpottamaan? :-)

sunnuntai 4. marraskuuta 2018

LaserJet printterin muuttaminen langattomaksi

Minulla on vuosikymmenen ollut LaserJet 1300 Windows koneessa kiinni, joka on jakanut printterin kämppään. Tässä tuli työhuoneen siivousprojektin yhteydessä tarve printterin siirtämiseksi piiloon kaapin sisään, jonka lähellä ei ole Windows tietokoneita, mutta jonne talon langaton verkko kuuluu.

Joten otin projektiksi katsoa saisinko sen kuinka helposti tukemaan wlania esim. Raspberry Pi:llä. Ja onnistuuhan tuo ja varsin edullisestikin.

Tässä BOM (Bill of Materials):

- Raspberry Pi Zero (Aliexpressistä 13.2e kotiintoimitettuna)
- 8GB microsd (Aliexpressistä 3e)
- 3 porttinen usb hubi verkkokortilla (3e)
- 5V microusb power (2e)
- USB wlan dongle (1.2e)
- pi zero case (https://www.thingiverse.com/thing:1167846 itse printattuna 0.3e)

Tekee alle 25e vaikka kiinatarjousten hinta vaihtelisi.

Asennuksen ajaksi tarvittiin myös USB näppis, jolla enabloida ssh.
Raspbian asennuksen jälkeen logataan sisään pi käyttäjänä:
# sudo systemctl enable sshd
# sudo systemctl start sshd
Itsellä piti vielä enabloida wifi (kukin voi tehdä sen erilailla).
# sudo echo "country=FI" >> /etc/wpa_supplicant/wpa_supplicant.conf
# sudo wpa_passphrase *SSID* *salasana* >> /etc/wpa_supplicant/wpa_supplicant.conf
# cat /etc/network/interfaces

source-directory /etc/network/interfaces.d
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Ja kun asetukset on paikoillaan, niin reboottia laitteelle, jonka jälkeen pääsee koneeseen ssh:lla käsiksi ja usb näppiksen voi unohtaa.

# sudo apt-get update
# sudo apt-get install cups hplip
# sudo usermod -a -G lpadmin pi

CUPSin conffitiedosto on /etc/cups/cupsd.conf, johon pitää tehdä muutamia muutoksia, että sitä voi käyttää vapaasti paikallisverkosta.

Etsi seuraava rivi:
Listen localhost:631
ja muuta se seuraavaksi:
Listen 0.0.0.0:631

Lisää seuraavat rivit:
BrowseRemoteProtocols CUPS dnssd
BrowseAddress @LOCAL


Etsi juurimääritys ja muuta se seuraavanlaiseksi:
<Location />
Order allow,deny
Allow all
</Location>

Ja sitten poistetaan "Order" rivit Location /admin ja Location /admin/conf lohkoista.

# sudo systemctl restart cups

Ja sitten conffaus loppuun webbibrowserin kanssa http://ip:631

Kuvalliset ohjeet cups:n conffamiseen webbibrowserilla esim täällä https://samhobbs.co.uk/2014/07/raspberry-pi-print-scanner-server.

Ja conffauksen jälkeen testasin Win10 koneesta, että kaikki toimii, printterin etsintäurliin syötin http://ip:631/printers/HP_LaserJet_1300, ja heittämällä toimi printtaus windows koneestakin käsin. Profit.

perjantai 26. lokakuuta 2018

THEC64 Mini uart sarjaliikenne modaus

Hankin tuossa THEC64 Minin, kun on vanhojen retrokoneiden lisäksi kiva olla vehje, jossa on HDMI ulostulo vanhojen pelien pelaamiseen. Ja kun netistä löytyi ohje, että laitteen sisältä löytyy sarjaporttipinnit, jolla voi 'rootata' laitteen ja lisätä toiminnallisuutta. Joten koska mä voin, niin pitihän minunkin.


Joten koppa auki ja kolmen piuhan kolvaus kiinni emoon (GND, TX ja RX) ja toinen pää kiinni 3.3V "FT232RL FTDI"(ebay search) moduuliin.

Ja viilalla taakse usb liittimen kokoinen reikä ja usb moduuli kuumaliimalla kiinni kopan sisään.

Ja sitten koppa kasaan ja koteloon kiinni usb kaapeli. Ja seuraavia ohjeita seuraten asetaan rootin salasana:
https://gurce.net/c64mini/how_to_mod_the_c64_mini_to_add_extra_games

Ja sitten sopiva paketti sisään, joka lisää 55 pelia normaalin 64:n päälle, joten modauksen jälkeen sinulla on 119 peliä valittavana karusellista. Kohtuu siisti ja huomaamaton modi, jolla sai kivasti käytettävyyttä lisää.

maanantai 27. elokuuta 2018

NVR laitteen modaus

Minulla on ensi sijaisena toimivan kameravalvonnan (Xeoma) lisäksi tuollainen 8 kanavan NVR kiinaihmeboxi: NVR N1008F. Mutta vaimon mielestä sitä ei voi käyttää kun se randomisti rebootatessa päästää niin kovan buzzer piippauksen, että puoli taloa herää. Firmiksessä ei ollut optiota hiljentää summeria, joten siitä se idea sitten lähti.

Avasin boxin ja löysin piirilevyltä piezzo buzzer kajarin nurkasta vga liittimen vierestä.

Siitä sitten kolvasin plus navan irti ja pistin punaisen hyppylangan väliin kytkimen, jolla voi äänet pistää päälle tai pois päältä.

Ja tein pikku reijän kytkimelle takakanteen, joten nyt on backup boxi kovassa ajossa, kun äänet on vivulla pistetty pois päältä. Lopputulos on omasta mielestäni aika siisti.