DVB-C unter Linux mit WinTV-HVR-930C-HD

Saturday, January 21. 2012
Da ich dank Stahlbeton im Arbeitszimmer leider schlechten Empfang habe (GPS, UMTS, DVB-T), habe ich mir einen DVB-C Stick zugelegt, um auch mal nen Film aufzeichnen zu koennen. Meine Entscheidung fiel auf einen HVR-930C von Hauppauge. Benoetigt werden im Endeffekt die Module xc5000.ko, drxk.ko und em28xx.ko. Getestet habe ich unter OpenSUSE 12.1 (benoetigt: cpan install Proc::ProcessTable) bzw. Fedora16

Firmwares besorgen (dvb-fe-xc5000-1.6.114.fw kommt aus dem linuxtv-repository)

wget http://www.wintvcd.co.uk/drivers/HVR-9x0_5_10_325_28153_SIGNED.zip
unzip HVR-9x0_5_10_325_28153_SIGNED.zip
dd if=HVR-900/emOEM.sys of=dvb-usb-hauppauge-hvr930c-drxk.fw bs=1 skip=71600 count=42692
cp dvb-usb-hauppauge-hvr930c-drxk.fw /lib/firmware/


Sourcen besorgen, uebersetzen

git clone git://linuxtv.org/media_build.git
cd media_build && ./build
make install; make load


Im dmesg sieht man nun folgede Informationen:

[ 1083.995244] usb 2-1.2.5: new high speed USB device number 9 using ehci_hcd
[ 1084.088621] usb 2-1.2.5: New USB device found, idVendor=2040, idProduct=1605
[ 1084.088626] usb 2-1.2.5: New USB device strings: Mfr=0, Product=1, SerialNumber=2
[ 1084.088629] usb 2-1.2.5: Product: WinTV HVR-930C
[ 1084.088631] usb 2-1.2.5: SerialNumber: 4034722785
[ 1084.089079] em28xx: New device WinTV HVR-930C @ 480 Mbps (2040:1605, interface 0, class 0)
[ 1084.089083] em28xx: Audio Vendor Class interface 0 found
[ 1084.089084] em28xx: Video interface 0 found
[ 1084.089086] em28xx: DVB interface 0 found
[ 1084.089234] em28xx #0: chip ID is em2884
[ 1084.143742] em28xx #0: Identified as Hauppauge WinTV HVR 930C (card=81)
[ 1084.144079] Registered IR keymap rc-hauppauge
[ 1084.144193] input: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.5/rc/rc3/input16
[ 1084.144294] rc3: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.5/rc/rc3
[ 1084.144867] em28xx #0: Config register raw data: 0x0a
[ 1084.144870] em28xx #0: v4l2 driver version 0.1.3
[ 1084.149647] em28xx #0: V4L2 video device registered as video2
[ 1085.402457] drxk: status = 0x439130d9
[ 1085.402462] drxk: detected a drx-3913k, spin A2, xtal 20.250 MHz
[ 1086.747318] DRXK driver version 0.9.4300
[ 1086.761734] drxk: frontend initialized.
[ 1086.761888] xc5000 5-0061: creating new instance
[ 1086.762481] xc5000: Successfully identified at address 0x61
[ 1086.762482] xc5000: Firmware has not been loaded previously
[ 1086.762485] DVB: registering new adapter (em28xx #0)
[ 1086.762489] DVB: registering adapter 0 frontend 0 (DRXK DVB-C DVB-T)...
[ 1086.763030] em28xx #0: Successfully loaded em28xx-dvb


Fernsehen kann man nun beispielsweise mit Kaffeine, leider geht Aufnehmen auf der Kommandozeile noch nicht- oder ich habs noch nicht verstanden


./dvb-apps/util/szap/tzap -t 3600 -o bla.ts -c zap.conf "RTL HH SH(RTL World)"
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
reading channels from file 'zap.conf'
ERROR: error while parsing bandwidth (syntax error)

FreeBSD mit ZFS als gespiegeltes zroot

Saturday, November 26. 2011
Ich habe meinen homeserver mit zwei Festplatten mit gespiegeltem ZFS unter FreeBSD (jetzt 9.0) laufen- jedesmal, wenn ich gefragt werde, suche ich wieder krampfhaft mein Skript, welches ich benutzt habe

Mein Bestelprojekt kommt langsam voran

Thursday, August 11. 2011
mein Arduino-Projekt nimmt langsam Form an, es soll eine Funkuhr sein. Prinzipiell gibt es ja mehrere Moeglichkeiten, die Uhrzeit per Funk zu bekommen (DCF77, RDS, NTP over WLAN oder GPS). GPS klang irgendwie am spannendsten, deshalb hab ich mich dafuer entschieden. Wenn man nicht umbedingt nen SIRF3 will, sondern sich mit einem SIRF2 zufrieden gibt, sind die Empfaenger bei ebay fastgeschenkt.


ich habe einen Mega328 mit Arduino-Bootloader mit den Schnittstellen seriell, ISP, I2C und fuer das GPS einen weiteren seriellen Port).

- das Display ist irgendwie komisch, anfangs verschwamm die Ausgabe recht schnell- die Loetstellen zwischen Display und Beleuchtung nachloeten hat das Problem verringert.

- die Spannungsversorgung verwendet ein altes Handynetzteil von Siemens, es wird von 8V auf 5V und dann auf 3.3V runtergebraten (und dann im Display auf etwa 13.5V gewandelt)
- die Wandlung der Signale von 5V (AVR) nach 3.3V (Display) erfolgt mit einer Diode und einem Widerstand
- die CPU ist ein Atmegz 328 mit 16MHz, der GPS Chip verwendet einen Arm7TDMI Core mit 50MHz

Todo:
- freie Flaeche mit digitalen I2C-Sensoren pflastern (Feuchte, Temperatur, Luftdruck oder so), ggf. 3.3V-I2C-Bus mittels PCA9515D bauen
- Chassis besorgen- besonders, wenn man es mitschleppen will zum Arduino Workshop
- Code aufraeumen (Uhrzeit lokal statt GMT, Fallback auf RTC, wenn kein GPS vorhanden)
- Display durchchecken

nen Arduino selbst bauen

Friday, July 15. 2011
... sollte ja eigentlich gar nicht so schwer sein, hab ich mir gedacht. Hier lag noch ein wenig Bastelkrams von myavr rum und ich wollte einfach mal in das Arduino-Oekosystem hineinschnuppern, ohne gleich wieder die Finanzministerin belaestigen zu muessen.

Konkret lag hier ein mySmartController ist ein Atmega168 mit USB-Anschluss (ueber CP2102) und 20MHz Quarz. Ach ja, noch nen Reset-Taster, aber mehr ist auf dem Board wirklich nicht drauf.

Continue reading "nen Arduino selbst bauen"

Das hat sie von Papa

Wednesday, July 6. 2011
schon beim Nuckeln erkennt man nen echten Rocker... das hat sie von Papa!

Willkommen auf dieser Welt kleine Saskia

Tuesday, June 21. 2011
gestern Abend um 22:51 war es so weit, nach nicht einmal 2h im Krankenhaus erblickte unsere kleine Saskia das Licht der Welt. 50cm lang, 3200g schwer und bei den sonstigen Tests hat sie auch Bestnoten bekommen.

Warum ich SSDs mag... diesmal so richtig

Monday, June 20. 2011
SSDs von Intel koennen sogar schon nach 30h kaputt gehen, weil dann die TBW (Tera Bytes Written) aufgebraucht sind, die die SSD garantiert schafft.

Intel® Solid-State Drive 320 Series Enterprise Server/Storage Application Product Specification Addendum Kapitel 2.3- Reliability: 5TB Maximum written


Eine 40GB SSD kann garantierte 5TB, also 125 vollstaendige Schreibzyklen verkraften.
Bei den im Datenblatt angegebenen 45MB/s kann mal also knapp 4 Zyklen pro Stunde schaffen- nach 30 Stunden, also etwas mehr als einem Tag kann man also so viel auf eine SSD schreiben, dass man die garantierten Schreibzyklen schon aufgebraucht hat?

tcm_loop second steps (rtsadmin)

Saturday, June 18. 2011
nachdem ich verstanden habe, wie man das tcm_loop Modul mit den lio-utils konfiguriert hat es eine Weile gedauert, aber ich glaube ich habe nun verstanden, wie in etwa das mit dem rtsadmin funktionieren soll. Irgendwie ist es noch einfacher als ich dachte. Es gibt auch eine Anleitung im wiki auf linux-iscsi.org, die ich wohl immer uebersehen hab :-(

Zuerst braucht man ein configfile fuer das Programm rtsadmin (cp rtslib/specs/loopback.spec /var/target/fabric)


[root@c64 ~]# cat /var/target/fabric/loopback.spec
# WARNING: This is a draft specfile supplied for testing only.
# The fabric module feature set
features = nexus

# Use naa WWNs.
wwn_type = naa

# Non-standard module naming scheme
kernel_module = tcm_loop

# The configfs group
configfs_group = loopback


nun kann man die Module laden

modprobe configfs
mount -t configfs none /sys/kernel/config
modprobe target_core_mod
modprobe target_core_file
modprobe tcm_loop


und mit rtsadmin loslegen

[root@c64 ~]# rtsadmin
Welcome to the RTSAdmin Community Edition CLI.

Copyright (c) 2011 by RisingTide Systems LLC.
Visit us at http://www.risingtidesystems.com.

Created '/sys/kernel/config/target/loopback'.
Done loading loopback fabric module.
/> cd backstores/fileio
/backstores/fileio> create fileio0 /sas/file0 10G
Generating a wwn serial.
Not using buffered mode.
Created fileio storage object fileio0.
Entering new node /backstores/fileio/fileio0
/backstores/fileio/fileio0> cd /loopback
/loopback> create
Created target naa.60014054c2c70825.
Entering new node /loopback/naa.60014054c2c70825
/loopback/naa.60014054c2c70825> cd luns
/loopback/naa...c2c70825/luns> create lun=0 storage_object=/backstores/fileio/fileio0
Successfully created LUN 0.
Entering new node /loopback/naa.60014054c2c70825/luns/lun0
/loopback/naa...825/luns/lun0>


Das neue device kann man ganz normal partitionieren, formatieren, beschreiben etc.

Rueckbau sieht so aus:

/loopback/naa...825/luns/lun0> cd ..
/loopback/naa...c2c70825/luns> delete lun=0
Successfully deleted LUN 0.
/loopback/naa...c2c70825/luns> cd /backstores/fileio
/backstores/fileio> delete fileio0
Deleted storage object fileio0.


Warum ich SSDs mag

Wednesday, June 15. 2011
Intel hat neue Enterprise SSDs vorgestellt, die 710er Serie

Eckdaten: 100 GB SSD, 500TB garantiertes Schreibvolumen, 210MB/s (was eigentlich echt lahm ist)
Und nun Kopfrechnen:

500 TB Daten/ 100 GB SSD= 5000x vollschreiben...

bei 200MB/s kann man die SSD in 500 Sekunden (8 Minuten vollschreiben)
5000*8 Min= 40000Min= 666h = 28 Tage und dann ist kaputt, zumindest die garantierte Schreibmenge erreicht....

Super Technologie! (bei gaengiger Schreibrate von 500MB/s, die Intels Consumer SSDs erreichen, waeren es sogar nur 10 Tage!)

tcm_loop first steps

Sunday, May 29. 2011
Ich habe ein wenig mit dem tcm_loop rumgespielt und auf dem Weg wohl doch einiges falsch gemacht. Demnaechst kommen hoffentlich noch Artikel ueber den Aufbau der configfiles, Wartung und wie man diese Devices an virtuelle Maschinen durchreicht.

Zuerst benoetigt man das configfs und ein paar Kernelmodule (im 2.6.39 enthalten)

modprobe configfs
mount -t configfs none /sys/kernel/config
modprobe target_core_mod
modprobe target_core_file
modprobe tcm_loop


Nun kommen Geraete, die auf beiden Seiten mit dem target_core_mod verbunden werden sollen. Ich habe mich fuer eine 100MB grosse Datei entschieden- moeglich sind auch pscsi, iblock oder stgt (iscsi).


[root@c64 ~]# tcm_node --fileio fileio_0/file0 /sas/file0 100000000
Status: DEACTIVATED Execute/Left/Max Queue Depth: 0/32/32 SectorSize: 512 MaxSectors: 1024
TCM FILEIO ID: 0 File: /sas/file0 Size: 100000000 Mode: Synchronous
[root@c64 ~]# tcm_loop --createnexus 1
Successfully created virtual SCSI I_T Nexus between TCM and Linux/SCSI HBA
SAS Target Address: naa.6001405415bfd6f6
SAS Initiator Address naa.60014059da8a5b8e
[root@c64 ~]# tcm_loop --addlun naa.6001405415bfd6f6 1 0 fileio_0/file0
Successfully created SAS Target Port to local virtual SCSI Logical Unit
[root@c64 ~]# lsscsi -g|grep LIO
[13:0:1:0] disk LIO-ORG FILEIO 4.0 /dev/sdc /dev/sg3
[root@c64 ~]#


Nun kann man mit dem virtuellen SCSI-Device spielen, hat man keine Lust mehr, wird es so entsorgt:


[root@c64 ~]# tcm_loop --unload
sas_target_naa: naa.6001405415bfd6f6
sas_target_tpgt: tpgt_1
sas_target_lun: lun_0
Succesfully deleted local virtual SCSI Logical Unit from SAS Target Port
Successfully deleted virtual SCSI I_T Nexus between TCM and Linux/SCSI HBA
Successfully removed NAA based SAS Target Address: /sys/kernel/config/target/loopback/naa.6001405415bfd6f6//sys/kernel/config/target/loopback/naa.6001405415bfd6f6/tpgt_1
sas_target_naa: discovery_auth
sas_target_naa: version
Successfully removed tcm_loop kernel module
[root@c64 ~]# tcm_node --delhba fileio_0 1
[root@c64 ~]# rmmod target_core_pscsi
[root@c64 ~]# rmmod target_core_iblock
[root@c64 ~]# rmmod target_core_file
[root@c64 ~]# rmmod target_core_mod
[root@c64 ~]#


Vergleich Solaris Comstar vs Linux multiprotocol Target Core

Tuesday, May 24. 2011
heute Abend habe ich versucht auf dem HHOSUG, das Linux Target Core Module mit Comstar zu vergleichen. Momentan funktioniert das alles noch nicht wirklich- slides werden aktualisiert, sobald es was neues zu berichten gibt. Ich bin ja gespannt, ob man damit ein SAS-Target bauen kann...

Slides hier oder als s/w PDF

Google vs. Ganglia

Saturday, April 30. 2011
ich habe festgestellt, dass seit einiger Zeit der Traffic auf dem dedihh massiv ansteigt. Normalerweise wuerde mich dieses nicht kratzen, allerdings sind wir dort limitiert und jedes GB extra kostet 2.-. Nach ein wenig Suchen fiel mir auf, dass da wohl einige Googlebots Amok laufen- jedenfalls kann ich mir nicht erklaeren, warum die googlebots nun alle paar Minuten neue Graphen anschauen wollen

Upgrade OpenSUSE 11.3 -> 11.4

Sunday, March 27. 2011
Auf http://en.opensuse.org/SDB:System_upgrade steht: Using for example the update from 11.3 -> 11.4 here:
auf: http://de.opensuse.org/Upgrade Vorsicht! Ein Upgrade auf 11.4 funktioniert nicht mit dieser Methode, da inkompatible Änderungen an der liblzma vorgenommen wurden!

Super, wenn die deutsche und die englische Seite unterschiedliche Aussagen machen...

Wettermessung

Saturday, March 19. 2011
Ich wollte immer schon mal eine Wetterstation mit Rechneranschluss besitzen. Bei ELV wird gerade die WS300PC sehr guenstig angeboten. Es ist eine Wetterstation, die intern Luftdruck, Temperatur und Luftfeuchtigkeit misst. Als Set gibt es dabei noch einen Funksensor fuer Feuchtigkeit und Temperatur. Man kann bis zu externe Sensoren verwenden- und das ganze laeuft unter Linux mit dem Programm wstool

Die Werte Wind, Regen stammen anscheinend vom Nachbarn schraeg gegenueber, der diese Sensoren am Balkon montiert hat.


molli123@c64:~/wstool> ./ws
{
"version": "0.01",
"timestamp": "1300516414",
"version_station": "23",
"wind_speed": "0.2",
"rain_sensor": "916.6",
"pressure": "1025",
"forecast": "sunny",
"sensor": {
"0": {
"temperature": "19.7",
"humidity": "44"
},
"1": {
"temperature": "19.9",
"humidity": "44"
}
}
}

SSD Benchmark Intel 510

Monday, March 7. 2011
Ich habe eine Intel-SSD der neuen Generation in die Finger bekommen und ein wenig damit rumgespielt.

Update: mit Kernel 2.6.38 und ext3 (mit batched discard) erreicht man schreibend >200MB/s- auch wenn die SSD einmal vollgeschrieben worden ist
Update2: util-linux 2.19 enthaelt fstrim, welches gemountete Dateisysteme trimmen kann.



Continue reading "SSD Benchmark Intel 510"