Category: Linux

DVB-T driver

Het compileren van de module werkte goed, en het werkte effectief. Alleen, de tvheadend op de Pi draaien bleek toch niet de beste keuze, in die zin dat de pi vooral geen radd leek te hebben met de HDD en de DVB-T stick tegelijkertijd, en dat zou wel eens vervelend kunnen zijn als je wil opnemen ... Dus, de oplossing zou dan zijn dat de Pi enkel nog de frontend heeft, en de backend op mijn pc draait. Om dat te doen moest ik dus ofwel de experimentele (voor Debian) Linux 3.8 kernel draaien, of moest ik de module gewoon compileren voor mijn computer. Ik heb dat laatste gedaan, en wel volgens de volgende stappen:
Eerst en vooral moest ik natuurlijk de source downloaden:

git clone https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0
cd DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0/RTL2832-2.2.2_kernel-3.0.0

Volgens de website die me op weg hielp bij het compileren en opsporen van alle zaken werd vermeld dat ik INCLUDE_EXTRA_DVB moest aanpassen naar 320. Toch bleek ik achteraf tegen problemen aan te lopen. Al snel vond ik allerlei mogelijke fixes, maar toen ik in de Makefile keek zag ik dat het eigenlijk geen probleem zou mogen zijn. Toen ik zelf een absolute locatie ingaf bleek het wel te lukken. Blijkbaar gaf PWD een verkeerde waarde terug ...

INCLUDE_EXTRA_DVB := include-320
SOURCEDIR := /home/kevin/Documents/SVN/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0/RTL2832-2.2.2_kernel-3.0.0

En vervolgens compileren, in de juiste map zetten en aan als module aan de kernel toevoegen:

make clean
make
sudo cp dvb-usb-rtl2832u.ko /lib/modules/3.2.0-4-686-pae/kernel/drivers/media/dvb/dvb-usb
sudo depmod -a

Nu had ik een vloeiend werkende TVHeadend backend, maar op de Pi kon ik NIET afspelen. Daar kreeg ik enkel een zwart scherm, terwijl het op mijn computer altijd al lukte. Dit bleek een probleem te zijn van Omxplayer. Wanneer je echter een recentere versie van TVHeadend (ik gebruikte eerst de stable repo voor wheezy, nu de unstable (in de beta had ik het niet gevonden, maar waarschijnlijk keek ik op de verkeerde plaats, want ook bij de unstable vond ik het niet direct. Ik zal dit zeker nog eens controlleren) en timeshift activeert, werkt het wel. Enig probleem: wanneer je rechtstreeks TV kijkt is de verhouding van het beeld totaal verkeerd. Naar verluid wordt er momenteel hard aan gewerkt, dus hopelijk dat er binnen afzienbare tijd een update komt voor Raspbmc waarin het werkt. Eventueel zou ik zelf een andere versie kunnen installeren, want naar verluid zijn er builds waarmee het al werkt.


Raspbmc

Vorige week is hij eindelijk toegekomen: mijn TSOP4838 ontvanger die ik op 20 februari (!!!!) heb besteld. Deze stond al sinds 27 februari gemarkeerd als klaar voor verzending en via de website zelfs als verzonden (Conrad stuurt GEEN bevestiging van verzending), maar ik heb die nooit ontvangen. Ik heb daarvoor tweemaal contact opgenomen met Conrad, via de website, en nooit geen antwoord op gehad. Toen ik vorige week maandag belde (was wat weigerig, want het kost 1 euro per minuut vanaf een GSM) bleek het net afgehandeld te zijn. Leuk detail: in mijn doos zat een mooie factuur! Nochtans had ik met voorafbetaling gewerkt (dat koste me 7 euro verzendkosten, maar uit privacyoverwegingen wou ik niet betalen via een systeem dat vanaf de server inlogt op mijn PC banking account! Daarnaast bleek bankcontact via hun website niet te werken met Fortis) en hiervan reeds bevestiging gekregen op 25 februari! Nu moet ik zeggen dat het me een beetje tot hier (wijzend 2 meter boven het plafond) zit, en ik dan ook zal trachten om Conrad te mijden. Probleem is echter dat zeker voor zaken als die IR-receiver er niet echt heel veel goede alternatieven lijken te bestaan. Creditcards, hoge verzendkosten en bulkbestelling, daar ben ik niet echt in geïnteresseerd.

Nu was het idee dus om die TSOP receiver aan te sluiten op mijn Raspberry Pi, en dan een multifunctioneel "baksje" (voor de niet-West-Vlamingen: afstandsbediening) uit de Action, die ik had gekocht voor mijn TV op mijn kot gebruiken om de Pi aan te sturen. Nu stond er Raspbian op, en dit moest Raspbmc worden. Dit genoot mijn voorkeur wegens het gebruik van de Debian basis, zoals Raspbian (is het niet op Raspbian gebaseerd?), wat een groot pluspunt is, en zelfs noodzakelijk, aangezien de Pi enkele tunnels naar het netwerk in Eggewaarts moet openhouden, en de externe HDD moet beschikbaar gesteld worden via NFS. Oorspronkelijk was het de bedoeling om dit alles op een Kingston kaartje te doen die ik al klaar had gelegd. Door het lange wachten is het echter waarschijnlijk van mijn bureau gevallen, en zo bij het vuilnis terecht gekomen ...

Ik heb dan maar mijn kleinere Samsung gebruikt die ik reeds gebruikte voor Raspbian. Nu is alles ingesteld. Het was even zoeken om mijn baksje goed in te stellen voor XBMC. Als basis gebruikt ik deze handleiding. Of toch gedeeltelijk. Ik had XBMC reeds ingesteld op een eigen config. Om zo'n config aan te maken gebruikte ik het volgende commando:
irrecord -d /dev/lirc0 ~/lircd.conf

Dit heb ik een aantal keer herhaald voor een paar verschillende mogelijke configuraties van het baksje zelf. Het was wel een probleem om het contextmenu te openen met een toets. Eerst had ik getracht met KEY_CONTEXT_MENU, maar dat lukte niet. De toetsenboordcombinatie is m, en dus probeerde ik KEY_M. Ook dit lukte niet. Vervolgens heb ik verschillende configs bekeken en uiteindelijk lukte het met KEY_TITLE.

Nu had ik ook een DVB-T usb-stick besteld, en ontvangen. Nu is het probleem dat deze pas sinds kernel 3.8 standaard wordt ondersteund. Standaard gebruikt Debian Wheezy, die al enige tijd voorbij de feature freeze is, 3.2, Raspbian gebruikt 3.6. Dit wordt dus compileren, en dat ben ik momenteel aan het doen volgens deze instructies.


Raspberry Pi voorbereiden

Eerst een stukje inleiding. Het gebeurt niet elke dag dat ik hier iets vertel van niet-technische aard, maar het zal later wat verduidelijken en het ligt op mijn lever. Het zit zo dat er vorige week problemen waren met het slot van de voordeur op mijn kot. Hierdoor stond de deur tijdens de week op een kier. Mijn fiets doe ik normaal op de gang op slot met het ringslot, niet zozeer uit wantrouwen voor mijn kotgenoten dat ze mijn fiets zouden stelen, maar omdat ze zo gedwongen worden toch iets voorzichtiger te zijn. Voorheen heb ik dat een periode niet gedaan, met als resultaat dat 's ochtends steeds mijn ketting er af was, en ik niet meteen (en niet zonder zwarte vingers) kon vertrekken, vandaar ... Nu doe ik dit 's middags meestal niet, omdat hij er dan niet zo lang staat, er ook heel wat minder fietsen staan, en zo kan ik sneller vertrekken. Vrijdag was ik even in de war, had wat pijn aan mijn been (was opgezwollen door een ongeval een week eerder) en ik heb hem niet op slot gedaan. U raadt het al: maandag was mijn fiets weg! Nu ben ik geen grote moraalfilosoof, maar waar gaan we naartoe! Fietsen stelen, tot daaraan toe, het lijkt een zeer populaire misdaad, maar om gewoonweg een huis binnen te stappen, en leuk met een van de fietsen op de gang terug naar buiten gaan, dat slaat echt alles!!

Enfin, er moest dus een oplossing komen, en thuis reed ik rond met de fiets waar mijn vader mee reed tijdens zijn studententijd in Limburg. Omdat ik nogal gehecht ben aan de luxe van de fiets, wilde ik dan ook zo nel mogelijk een vervangfiets, en dat was de ideale oplossing. Vandaag moest mijn moeder toch in Gent zijn, en dus ben ik na de les vandaag naar het UZ geweest, en de fiets opgehaald. Deze morgen was er echter een pakketje uit "China" mee, en mijn moeder had dat voor mij reeds meegebracht.

En zo komt het dat ik vandaag al even bezig kon zijn met mijn bestelling uit Hong Kong, bestaande uit 2 pakjes elektrische draden, waarvan eentje besteld wegens mogelijk nuttig in de toekomst (kost 1 euro, en als ik het nodig heb zou ik terug zolang moeten wachten). Deze draadjes dienen om de GPIO van de Raspberry Pi te gebruiken, met als doel er een infrarood-ontvanger op aan te sluiten. Die heb ik besteld bij conrad, maar staat al van eind februari genoteerd als klaar om te verzenden. Zal straks nog maar eens een vriendelijk mailtje sturen, en anders morgen maar eens bellen, want mijn geduld raakt op.

Maar, als ik die ontvanger dan eindelijk heb kan ik mijn Raspberry Pi dan omtoveren tot een uiterst flexibele Media Speler/Center. Het is een Speler in die zin dat slechts een beperkt aantal formaten kan afspelen (de processor zelf is niet krachtig genoeg om wat dan ook af te spelen, en het is dan ook volledig afhankelijk van de video-chip), maar anderzijds heb je wel de vrijheid van een Media Center, inclusief de mogelijkheid om er via USB evt DVB-T of zo mee te bekijken, want ik ook zal proberen. Wordt vervolgd ...


Xfce4 Screenshooter

Gisterenavond heb ik nog even voor het slapengaan gekeken om iets op te lossen waar ik me al lang aan ergerde. Het is namelijk zo dat het screenshot programma van Xfce4 de gewone datum van de huidige locale gebruikt om het datum-gedeelte bij de bestandsnaam gebruikt. Dat zorgt ervoor dat screenshots helemaal door elkaar komen te staan, aangezien de alfabetische volgorde dus niets meer zegt over de volgorde in het aanmaken van de screenshot.

Dus heb ik snel de broncode gedownload:
apt-get source xfce4-screenshooter

Vervolgens heb ik het probleem gelokaliseerd tot lib/screenshooter-utils.c. Vervolgens heb ik het volgende gedaan in de gedownloade map:

quilt new 02_make-date-locale-independend.patch
quilt add lib/screenshooter-utils.c
# pas het bestand aan
quilt refresh
quilt header -e

Vervolgens ben ik naar de debian map gegaan en daar het volgende commando uitgevoerd:
DEBEMAIL=info@Online-Urbanus.be DEBFULLNAME=Paretje EDITOR=nano dch -v 1.8.1-1-paretje1 package xfce4-screenshooter

Vervolgens kon ik het pakket aanmaken:
debuild -i -us -uc -b

Vervolgens heb ik het pakket op mijn repo geplaatst. Vervolgens heb ik ook een paar verouderde pakketten van wheezy verwijderd.


Creative WebCam PD1001

21/12/12:
Enkele dagen geleden wou ik op mijn kot mijn oude webcam die ik eens meegenomen had om te experimenteren testen. We hebben er twee, en deze webcam had de minste kwaliteit, en had indertijd geen standaard-drivers in Linux. Er was wel een third-party driver die je zelf moest compileren, maar dat was echt de eerste weken/maanden dat ik Linux gebruikte, en durfde dat niet aan, later bleek onterecht, maar enfin.

Nu, al die jaren later was ik wel een beetje curieus, en stopte het kabeltje in de USB-poort. Het lichtje ging aan, en dat leek al een reden tot feesten, maar in cheese bleek er helemaal geen webcam te zijn. Na wat opzoekwerk vond ik dat er wel eens wat problemen waren met cheese, en probeerde guvcview. Maar het was duidelijk, dit stuk antiek werd ook nu niet standaard ondersteund.

Dan maar eens gezocht naar een driver, en vond de epcam driver. Maar, spijtig genoeg wilde die niet meteen compileren. De driver werd voor het laatst gewijzigd in 2010, en sindsdien is het nodige veranderd in de kernel. Zo is de kernel_lock functionaliteit terug verdwenen/vervangen, en zitten ze nu met v4l2. Deze laatste bestond toen al, maar had nog compabiliteits-functies.

Al bij al moest ik de nodige dependencies installeren, aangepaste videodev.h (ik weet niet meer waar ik het origineel eerst vond) in /usr/src/linux-headers-3.2.0-4-common/include/linux/videodev.h plaatsen, de oude manier van locking die de driver gebruikte voor kernels ouder dan 2.28 ook voor kernels vanaf 2.39 gebruiken, en de macro die werd gebruikt wanneer niet in compatibiliteits-modus van v4l gekopieerd in de driver-source. In de videodev.h moest ik enkel #include <stdint.h> verwijderen, omdat dit compiler-errors gaf. Op die manier waren alle problemen opgelost, en kon de driver compileren en installeren.

Maar, misschien mede door de driver, maar de kwaliteit is er zeker niet op vooruit gegaan, maar ik durf echt niet meer zeggen of het vroeger ook zo was, maar er zijn in ieder geval een aantal plaatsen die geen correcte kleur hebben, maar kan net zo goed een defect aan de sensor zijn natuurlijk, en hij was nieuw verder zeker niet beter, maar weet niet of dat er zo was.

Maar, mijn doel is bereikt, ik kreeg de PD1001 aan de praat met Linux 3.2.0. Hier is de source-code, en zal het misschien even vermelden op het Raspberry Pi forum, want er was daar iemand die hem ook aan de praat wou krijgen. Dat is dan het nadeel van in het Nederlands te schrijven, ik zal niet simpelweg naar hier kunnen verwijzen, maar zal dus het verhaal moeten samenvatten in het Engels.

Voor echt gebruik als webcam is dit natuurlijk niet geschikt, maar mocht ik dat willen kon ik ook gewoon de pd1030 gebruiken, die wel standaard werkt en een veel betere kwaliteit heeft. Maar, misschien kan ik het bijvoorbeeld wel gebruiken als een soort camera-bewaking op mijn kot.


WD TV Live Update

Tijdens de examens was er plots terug een update voor de WD TV Live, en ik heb die geïnstalleerd, maar wat een vergissing was dat: ik moest nu zowat een halve minuut wachten voor een video in beweging kwam, YouTube was in hogere resolutie waardoor het niet meer lukte met mijn internet-verbinding, en daarnaast was de vernieuwde YouTube-interface enkel voorzien op een scherm aangesloten op HDMI, want met analoge tulp lag een heel stuk van de interface gewoon buiten het scherm.

Als ik zo kijk naar de thread over de update op het WD-forum ben ik duidelijk niet de enige! Gelukkig wordt er wel een downgrade aangeboden. Heb dit gedownload, uitgepakt op stick, stick in de WD TV Live, upgrade-procedure doorlopen, en hij werkt terug als vanouds, zonder nodeloze ergernissen!


NFS problemen

Tijdens de examens vorig jaar had ik het probleem dat mijn NFS schijven niet meer automatisch gemount werden bij het opstarten van mijn computer. Uiteindelijk bleek de afwezigheid van ifupdown de oorzaak te zijn, en de oplossing van mijn probleem.

Maar, ik heb ondertussen alweer een tijdje dit probleem. Als tijdelijke oplossing heb ik gewoon bij al mijn computers mount -a toegevoegd aan de rc.local. Maar, op een avond heb ik op de computer beneden die ik geprepareerd heb voor mijn zuster, waarover later meer, toch even uitgezocht wat het probleem is. Ik kon het terugbrengen tot een if statement die altijd false oplevert. Waarschijnlijk heeft dit als oorzaak dat er ergens een extra pakket nodig is.

Het heeft te maken met de controle of er een verbinding is, alleen faalt die dus altijd. Verwijderen werkt perfect eens de computer werd opgestart, maar levert natuurlijk problemen op als ik later de computer opnieuw wil starten, want dan zal hij vastlopen op het moment dat hij probeert een verbinding te maken, nog voor er een werkende verbinding is. Ik moet dus eens uitzoeken waar de waarde bepaald wordt die er getest wordt, en hoe het dus komt dat die waarde bij mij niet bepaald is. Dat zal dus meteen de oplossing zijn voor mijn probleem.


IRC chat

Rond de periode van de examens wou ik er voor zorgen dat ik meer meldingen kreeg van activiteit op de IRC chat met Pidgin. Het is namelijk zo dat ik met behulp van een private IRC server een mogelijkheid tot chatten wil verzorgen met het thuisfront. Maar, ik wou daarbij meer een melding krijgen, zodat het meer zou opvallen als er een bericht werd gepost op de chat als ik bezig was. Nu heb ik daarvoor uiteindelijk libnotify plugin voor pidgin gebruikt, die u echter niet meer in de Debian repos voor Wheezy zitten. In mijn draft voor dit bericht stond enkel het volgende:
libindicate libnotify
Maar wat libindicate daarmee te maken heeft???

Maar, nu ik even terug keek in de repos, zag ik het pakket pidgin-guifications. Dat blijkt een nog vollediger pakket aan te beiden. Het standaard thema is dan wel 0 aan waarde, vermits zelfs de melding wordt afgebroken, maar er bestaan bijvoorbeeld ook gewoon thema's die de libnotify-meldingen nabootsen, dus ...

Maar, ondertussen heb ik naar een manier gezocht om vanuit Gent gemakkelijk een verbinding te maken met de IRC server op mijn netwerk in Eggewaarts. Tot noch toe maakte ik daar telkens een nieuw ssh-tunnel voor. Ik heb nu daarvoor gebruik gemaakt van autossh op mijn Raspberry Pi (waarover later meer;)). autossh biedt alle ssh functionaliteit aan, maar maakt automatisch een nieuwe verbinding als de huidige verbroken wordt. Dat laatste is zeer belangrijk, den maar aan een verandering van IP-adres, maar ook als de verbinding om wat voor reden even verbroken wordt, moet die terug hersteld worden. Door autossh te straten met start-stop-daemon in /etc/rc.local heb ik dus altijd, als mijn Pi aanstaat, een IRC verbinding. Als ik er dan voor zorg dat de tunnel terug over het LAN geopend wordt, dan kan ik dus terug altijd een IRC verbinding aangaan op mijn computer.

Het exacte commando zal ik later een posten, heb het nu niet bij de hand ...

20/02/2013, 20:06:
Zoals beloofd:
sudo -u user2 start-stop-daemon background start exec /usr/bin/autossh -T -C -N -g -L port1:lokaal:port2 user@server


ATI drivers

Voor de examens was er het project voor Scriptingtalen. Voor het project werd gebruik gemaakt van de Pyhton-bindings van Blender. Nu had ik dus zeker mijn grafische kaart nodig, en net dan waren er problemen met de ATI drivers die niet compatibel waren met de nieuwe X-server, en ik geloof dat het niet lukte met de open-source drivers, of niet goed genoeg en dus ben ik maar snel achter een Geforce 210 geweest. Niet sneller dan de ingebouwde ATI chip, maar toch drivers die dus beter onderhouden worden. Er zijn zeker een paar minpuntjes ook aan de nvidia drivers, maar toch is het terug een beetje bevestigd dat je zekerder bent bij Nvidia voor Linux drivers. Als bijkomend voordeel geld dat de video-versnelling van Nvidia veel gemakkelijker aan de praat te krijgen is dan die van ATI.

Nu moest ik natuurlijk nog er voor zorgen dat ook effectief gebruik werd gemaakt van de Nvidia kaart, en niet van de ingebouwde chip, en dat dit correct gebruikmaakte van de Nvidia drivers. Daarvoor vond ik het volgende commando:
X -configure

Zo leert mij de bash geschiedenis van root mij tenminste, want zelf wist ik het niet meer exact, en heb ik het volgende gebruikt voor de configuratie van een oude computer voor beneden aan de TV (waarover later meer):
Xorg -configure

Waarschijnlijk is er geen verschil, heb het niet nagekeken, maar toch het vermelden waard, aangezien het aantoont dat als wel iets hebt horen luiden, maar de klepel niet meer weet hangen, je toch tot een iets andere oplossing kan komen. Nu, in dit geval nu niet zo zeer, maar toch.


Uw vuilniszakken buiten zetten?!

Tja, geregeld moet je eens je vuilnis buiten zetten, maar het gebeurt af en toe dat je het (bijna) vergeet. Handig zou zijn mocht je dit in je gesofisticeerde GSM stoppen, helaas is dat zo een post waar ik het liefst op bezuinig, en dus heb ik een simpel Nokia-model. Geen sprake dus van herhalende gebeurtenissen, en week per week instellen, tja als je ze vergeet buiten te zetten, zal je ze ook wel vergeten instellen he. Daarom wou ik het wel eens gaan regelen met behulp van libnotify.

Je kan dit systeem ook vanuit de commandline aanspreken met behulp van het commando notify-send, waardoor ik tot het volgende commando kom:
notify-send -u 'critical' -i '/usr/share/icons/Tango/scalable/places/user-trash.svg' 'Donderdag, vuildag!' 'Vergeet uw vuilzakken niet buiten te zetten, he!'

Maar, dat is nog niet voldoende om het te laten werken vanuit een cronjob, want daar heb je geen rechtstreeks toegang tot de X-server. Al snel kwam ik de suggesties met DISPLAY en DEBUS_SESSION_ADDRESS tegen, maar dat hielp niet. Maar op een gegeven moment vond ik een blog waar sudo -u werd gesugereerd, en inderdaad in combinatie met de DISPLAY werkt dit:
export DISPLAY=:0.0; sudo -u kevin notify-send -u 'critical' -i '/usr/share/icons/Tango/scalable/places/user-trash.svg' 'Donderdag, vuildag!' 'Vergeet uw vuilzakken niet buiten te zetten, he!'

Maar, blijkbaar kan het nog korter en mag je dus met omgevingsvariabelen gewoon DISPLAY definiëren en zonder beëindiging van het commando notify starten, en wordt DISPLAY meteen doorgegeven:
DISPLAY=:0.0 sudo -u kevin notify-send -u 'critical' -i '/usr/share/icons/Tango/scalable/places/user-trash.svg' 'Donderdag, vuildag!' 'Vergeet uw vuilzakken niet buiten te zetten, he!'