Posts mit dem Label linux werden angezeigt. Alle Posts anzeigen
Posts mit dem Label linux werden angezeigt. Alle Posts anzeigen

Mittwoch, 16. Februar 2011

Teamspeak 3 Wav to Mp3

This is rather a note to myself. If you try to convert a wav-file with Lame, which had been written by Teamspeak 3, you'll probably encounter the following error:

Unsupported data format: 0x0003

One solution is, to resample it with Sox:

sox ts3.wav -b 16 -r 44100 converted.wav

Now, you may convert it with lame (or oggenc):

lame -V9 converted.wav final.mp3

or directly by piping:

sox ts3.wav -b 16 -r 44100 -t wav - | lame \
-V9 - final.mp3


I've chosen -V9 since that voice quality was still good for me. The original file had 906 MB, the other wav (generated by Sox) had 417 MB. I finally got mp3's of 18 MB (with -V9) and 26 MB (with -V8).

Montag, 4. Januar 2010

PrimaCom Internet verteilen mit Knoppix

Wenn Sie einen PrimaCom-Anschluss besitzen und das hier lesen, werden sie vermutlich bemerkt haben, dass im Windows für die LAN Verbindung keine Internetverbindungsfreigabe möglich ist. Das liegt möglicherweise daran, dass das PrimaCom-Gerät sich einmalig den erstbesten Rechner sucht, und ihm eine dynamische, externe IP zuweist. Über diese wird dann kommuniziert. Es ist eben ein "Cable-Modem", das via Ethernet funktioniert, zum Leidwesen aller Windows-User, die nur eine Netzwerkkarte haben - oder grad keinen Hardware-Router zur Hand. Aber es gibt ja zum Glück noch andere Systeme. Mit Knoppix lässt sich alles ordentlich dahin routen wo es hin soll.

Wir wollen:
  • Beliebig viele PCs online haben
  • Ohne Hardware-Router
  • Mit nur einer Netzwerkkarte pro PC
Was man dafür braucht:
  • Einen Hub oder Switch
  • Einen Rechner auf dem Knoppix dann laufen wird (oder ein anderes Linux)
Letzteres sollte idealerweise das Gerät sein, auf das das Modem standardmäßig anspricht. Sollte dies nicht der Fall sein, könnte eventuell ein Modem-Reset von Nöten sein, was ich allerdings nicht ausprobiert habe.

So sieht die Konfiguration dann aus:
|---------|        ________        _____________
| Knoppix |_______| Switch | _| PrimaCom |
| PC | #-oooo-o-# / | Cable-Modem |
|---------| || \____/ #-------------#
||
|---------| || |---------|
| Anderer |_________||____________| Anderer |
| PC 1 | | PC 2 |
|---------| |---------|
Wenn kein Crosskabel vorhanden ist, kommt das Modem an den Uplink-Port des Switches (die sind meistens extra gekennzeichnet). Wenn der PC mit Knoppix startet, müssten die Netzwerkeinstellungen für's Internet schon korrekt sein.

Unter Knoppix dann folgendes (mit sudo davor, wenn es Probleme mit den Berechtigungen gibt):

  • ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0 up
  • sysctl net.ipv4.ip_forward=1
  • iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Nun gibt es für die anderen Geräte zwei Möglichkeiten:

A) Manuelle Konfiguration
B) Automatische Konfiguration

A geht mit Linux so:

  • ifconfig eth0 192.168.0.2 netmask 255.255.255.0 up
  • route add default gw 192.168.0.1
  • echo "nameserver 8.8.8.8" >> /etc/resolv.conf

Und für Windows:

  • IP-Adresse: 192.168.0.2
  • Subnetzmaske: 255.255.255.0
  • Standardgateway: 192.168.0.1
  • DNS: 8.8.8.8
Natürlich brauch der nächste Rechner dann 192.168.0.3 usw.

Für Möglichkeit B muss ein DHCP Server auf dem Knoppix Rechner eingerichtet werden.

Das Cable-Modem ist ansich nicht schlecht. Vor allem mag ich den dicken, großen Knopf zum An- und Ausschalten. Es bietet zwar einen DHCP Server, aber keine Routing Funktionalität. Warum man nun scheinbar ausschließlich durch einen Reset des Modems den Zielrechner ändern kann... tja. Als langfristige Lösung bietet sich am Besten ein wLan Hardware-Router an.

Mittwoch, 25. November 2009

PXE Odyssey

Booting via network is a nice thing, when it works. I tried to boot my laptop (which didn't recognize my CDRW) with the help of another Windows machine to finally install a Linux distribution from the Internet. At first, the best solution wasn't obvious. You'll need a few server apps which are all nicely integrated into a program which goes by the name tftpd32. Next prerequisites are some files (bootloader, installer...) which will be actually loaded into the target machine. Just follow the instructions of this excellent post.

I had a few problems, though. Unfortunally, PXE error messages aren't very enlightening. At best you'll be able to find out to which server application the error message is referring to. For example I got that one:

PXE-E53: No boot filename received

I don't know why it happened. I guess it simply asked the wrong DHCP server (although I saw that tftpd32 was correctly responding). As soon as I removed my DSL router, I got another error:

PXE-E51: No DHCP or proxyDHCP offers were received

Guess this is another DHCP problem :-). He claims that he didn't receive an offer from tftpd32, and he's a damn liar. tftpd32 told me otherwise. I struggled around for a half an hour and got it finally done. I read something on the net about Full-Duplex problems and so on... well, nonsense. Solution was to go back to basic. I put both machines on a switch, configured the windows network adapter manually just with 192.168.0.1 / 255.255.255.0, adjusted "IP pool starting address" in tftpd32 to 192.168.0.2, made the default router 192.168.0.1 and it worked. Well, DHCP worked, but not TFTP:

PXE-E32: TFTP open timeout

tftpd32 told me this instead:

Rcvd DHCP Discover Msg for IP 0.0.0.0, Mac 00:00:39:59:11:B4 [24/11 22:14:37.161]
DHCP: proposed address 192.168.0.1 [24/11 22:14:37.161]
2868 Request 2 not processed [24/11 22:14:37.239]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:00:39:59:11:B4 [24/11 22:14:38.145]
Previously allocated address 192.168.0.1 acked [24/11 22:14:38.145]
Connection received from 192.168.0.1 on port 2070 [24/11 22:14:38.161]
Read request for file <pxelinux.0>. Mode octet [24/11 22:14:38.161]
OACK: <blksize=1456,> [24/11 22:14:38.161]
Using local port 55153 [24/11 22:14:38.161]
2868 Request 2 not processed [24/11 22:14:38.208]
File <pxelinux.0> : error 10054 in system call recv An existing connection was forcibly closed by the remote host. [24/11 22:14:38.270]

Okay. That is, he tries to read 1456 bytes from pxelinux.0 and closes the connection. Something went wrong at the remote machine. The laptop doesn't remember and simply says "timeout". So I tried lots of things. Shortened the directory names (C:\pxe\...), tried other pxelinux.0 files and so on.

Nothing changed, till I deleted everything except tftpd32.exe/.ini and pxelinux.0 and suddenly the laptop complained about several missing files (e.g. pxelinux.cfg/default). So I added step-by-step the remaining files and it worked. It loaded all files necessary for booting the debian installer. I switched back cables and re-configured network connections (also in the installer) and could complete the installation. Happy end with PXE.

Dienstag, 2. Juni 2009

rsdl v1.1

Here comes the next version of my cool Rapidshare download tool for the bash command line. It works out of the box on most Linux distributions and on Macintosh.

Download (md5) // Update January 2010: Mirror is down at the moment. Sorry.

Make sure to have read my previous post on rsdl. This is basically a bugfix release, the following things have been done:
  • Many bugfixes
  • Temporary files get stored in /tmp now
  • Output fits better into the terminal
  • Time gets counted down
  • rsdl won't overwrite files
  • More error checks for Rapidshare (file deleted/server busy and so on)
PS: There seems to be a similiar tool for premium users of Rapidshare which goes by the same name, rsdl.

Freitag, 29. Mai 2009

Howto boot the Damn Small Linux ISO from hard disk with Grub

Just this evening I wanted to install Damn Small Linux on one of my computers. But I had no more blank CDs left, so I searched for a way to boot the ISO from hard disk with GRUB, as Xubuntu was already installed on the machine. Well I found a lot of crap and nothing worked for me. I really think that there is no quick and easy solution. I tried a few things out and came out with the following way:

  • At first, you need some extra space on your hard disk. If you want to install DSL it would be better to boot off an other partition, too. I used my 512MB swap partition for that purpose, but I think that also a little more than 50MB are already enough for DSL.
  • Boot into some Linux system of your choice, this could even be Knoppix from CD. Then, execute carefully (!!) the following steps:
  1. Make sure that your swap partition isn't in use. (swapon -s, swapoff /dev/hdXX)
  2. Change the type of the swap partition to 0x83 with fdisk.
  3. Use mkfs.ext2 to create a new file system on your old swap partition. (mkfs.ext2 /dev/hdXX)
  4. Mount your new ext2 partition (mount /dev/hdXX /somefolder)
  5. Mount the DSL ISO to some folder. (mount dsl.iso /someotherfolder -o loop)
  6. Copy the contents of the ISO to your new ext2 partition. (cp -R /someotherfolder/* /somefolder)
Maybe this works also without the need for another partition, but I preferred to go the safe way.
  • Now you'll need Grub. Reboot. I had to press 'ESC' to get into the Grub menu when starting Xubuntu. Go into Command Mode with 'c', then execute the following commands:
  1. root (hd0,2) # hd0,2 was my old swap partition; that is /dev/hda3
  2. kernel /boot/isolinux/kernel24 # So / would be the root of the DSL ISO
  3. initrd /boot/isolinux/minirt24.gz
  4. boot
Now, if you're lucky you'll see the DSL ASCII logo after you hit return. I think that this would work also pretty good for Knoppix, haven't tested it though. Hope this helps a bit!

Montag, 27. April 2009

Speicherfrust

Seit Monaten schlug ich mich herum mit einem äußerst nervigen Computerproblem, bis heute. Die Rede ist von meinem Gentoo, das sich aufhing sobald ich zuviel RAM belegt hatte. Ich konnte kein Swap verwenden; der Grund dafür ist, dass mein Mainboard (vermutlich aufgrund von starken Temperaturschwankungen in einer der heißeren Regionen Madagaskars) völlig hinüber ist. Durch den defekten DMA Controller bin ich gezwungen alle Geräte im PIO Modus anzusprechen, was das System natürlich enorm ausbremst da die CPU Last bei jedem Zugriff auf 100% schnellt.

Firefox ist ein einziger RAM-Fresser; da konnte es schon mal passieren, dass man eine Anwendung zuviel öffnete und schwups passierte es: Das System griff auf die Festplatte zu wie wild, Musik im Hintergrund fing an zu stocken, der Mauszeiger reagierte kaum noch - bis schließlich so ziemlich alles völlig zum erliegen kam. Kein Login von außen möglich. Mein einziger Ausweg war damals der kalte Reboot, da ich keine rettende Lösung kannte (außer aufzupassen dass der Speicherverbrauch nicht ein gewisses Maximum überschreitet).

Anfangs noch dachte ich, es läge ganz einfach an der Auslagerungsfunktion vom Kernel. Also, dass, sobald der RAM voll ist, er jede Menge Daten auf die Swap-Partition schaufelt (was ja eh schon langsam ist), und diese Aktion durch den lahmen PIO Modus alles Andere blockiert. Das erschien mir logisch woraufhin ich by-all-means versuchte diesen Mechanismus zu deaktivieren, was mir einfach nicht gelingen wollte. Zuallererst probierte ich es, mit swapoff, zu deaktivieren, kommentierte dann nachträglich den Eintrag für die Swap-Partition in /etc/fstab aus; ich setzte den sysctl Wert vm.swappiness auf null; ja, ich entfernte sogar letztendlich das Kernelmodul.

Es half alles nix. Der RAM war voll, und die Festplatte fing an zu rattern. Warum?? Ich fand keine Lösung. Irgendwann fand ich heraus, dass der Kernel ja eigentlich noch prächtig reagierte. Denn mit dem SysRq Key konnte ich erfolgreich den Schaden begrenzen und das System vernünftigen neustarten - später, nach erneuter Recherche, dann sogar lediglich die aktuelle X Session killen und mich neu einloggen. Trotzdem waren alle Programme zu, und die Arbeit teilweise verloren.

Heute, als ich Doxygen kompilieren wollte und mir das Debakel 5 Mal am Stück passierte, versuchte ich mich wieder einmal daran, diesem merkwürdigen Festplattenzugriff auf die Spur zu kommen. Manchmal sah man ja anhand von dmesg, dass der Kernel tatsächlich ein Programm ausgewählt und terminiert hatte aufgrund einer out-of-memory condition; das passierte aber viel zu selten - und wenn, dann auch erst nach einer halben Ewigkeit. Da jegliches Swapping vom Kernel bereits entfernt war brauchte ich dort nicht mehr suchen. Stattdessen nahm ich mir vor jede einzelne vm-Variable von sysctl zu überprüfen und wurde sehr schnell fündig. Des Pudels kern liegt im ausgetüftelten Speichermanagement von Linux.

Hier kann man den relevanten Part nachlesen (er beschreibt sogar fast dasselbe desaströse Verhalten im Abschnitt "Kernel virtual memory management"). Der Kernel vergibt nämlich allerhand Speicher, den er gar nicht hat, da er weiß, dass die meisten Programme gefräßige Monster sind. Dieses Zusammenspiel ist normalerweise kein Problem - auf meinem System jedoch, schon. Wieviel er sich dabei extra herausnimmt wird mit der sysctl Variable vm.overcommit_ratio festgelegt. Einmal auf 0 (% extra) gesetzt, gab es keine Probleme mehr. Ein geeigneter Task wurde beim Testlauf mit Gimp (und riesigen Bildern) sofort vom Kernel ausgewählt und gekillt...

Cool!

Nachtrag: Es ist nicht so einfach wie ich mir das vorgestellt hatte, es passiert nämlich immernoch: Der kswapd blockiert das ganze System (selbst Tasks die mit nice -20 laufen) und die CPU befindet sich 90% der Zeit in Wartestellung. Also forschte ich weiter und fand heraus, dass sich mit der Variable vm.overcommit_memory das Grenzverhalten einstellen lässt. Ist sie gleich null werden heuristische Verfahren angewendet, die abwägen, ob Anwendungen getötet werden müssen oder nicht. Bei dem Wert 2, wird konsequenter vorgegangen - das kann allerdings gefährlich werden wenn vm.overcommit_ratio null ist: Denn dann kann keine Anwendung mehr auf dem gesamten System Speicher reservieren, noch nicht mal init. Aber selbst mit der harten Einstellung kann es immer noch manchmal vorkommen, dass sich das System zu Tode kswapd't. Wer mehr Informationen dazu hat, bitte kommentieren ;-)

Nachtrag: Nach längerem Testen habe ich mich nun dazu entschlossen, meine Swap Partitionen wieder anzuschalten. Dabei kann man auch denen, die eine schnellere Zugriffsgeschwindigkeit besitzen, ganz einfach eine höhere Priorität geben als den Anderen. Diese Lösung ist tatsächlich empfehlenswerter, als das Swapping komplett auszuschalten - denn der wundersame, unaufhörliche Festplattenzugriff des kswapd, der das ganze System zu Tode blockiert, ist nämlich viel, viel schlimmer als im langsamen PIO Modus auszulagern. Mit dem deadline scheduler des Kernels lässt sich das auch noch ganz gut ertragen.

Samstag, 14. März 2009

rsdl

I present you the first English entry in my blog and the first release of my 'rsdl' tool for Linux. It's basically a tiny shell script which does all the pesky work for you. There's still a few things to fix, but please try it out, you won't be disappointed.

Be careful though, as it won't (yet) check if it would overwrite a file or not - one could say that it is still beta software. The only "special" requirement is 'curl', so it should still run on most linux distributions. If you make a list of your RS links, you'll be able to do the following:

cat list | xargs rsdl

If you find or even fix some error, please let me know or send me patches. Further updates will always be available here.

Download (md5)

Have fun, and don't tell these guys from RS ;-)

PS: This program has been written only for the "Free Download" feature, and not (yet?) for the premium zone.

15. 3. : Meanwhile I've found out, that there exist other tools which do a similar job. However, I still prefer this one at the moment because of it's simplicity: No overblown interface, no config files and almost no dependencies.

Sonntag, 8. März 2009

Trac

"Use the best tools available for testing and for analyzing the problem, the design, and the implementation" - Bjarne Stroustroup

Das Projekt, in das sich im Moment all meine Energie stecke wird langsam aber sich groß. Ich benutzte bisher lediglich Subversion mit WebSVN um der Änderungen Herr zu bleiben - und ein paar ganz normale Text Dateien. Mir war Trac schon etwas früher zufälligerweise aufgefallen, ich konnte damit aber herzlich wenig anfangen da ich eigentlich Support für ein WebSVN Feature suchte, das Trac lediglich für sich selbst implementiert hatte.

Ich gab dem ganzen heute einen Versuch und installierte es auf meinem System. Gentoo ist ja nicht gerade dafür bekannt, leicht konfigurierbar zu sein. Trac ist mal wieder ein Paradebeispiel und hat mich etliche Stunden gekostet. Aber wenn auf einem Linux System mal etwas erst läuft, dann läuft es meistens auf ewig! Das Setup dauerte auch zusätzlich noch etwas länger, da ich versehentlich meine 'system locales' geschrottet hatte, und die Python Skripte von Trac regelmäßig deshalb abschmierten.

Ich dachte also ich 'emerge' es einfach schnell, passe ein paar Config-Dateien an und es sollte laufen. Pustekuchen!

Probleme:

Ich habe einen Apache Server (ohne vHosts) der "/var/www/localhost/htdocs" verfügbar macht. Da liegen alle meine Skripte und anderes nützliches Zeugs wie PHPMyAdmin, MRTG, WebSVN usw. Ich dachte also ich könnte einfach ein weiteres Verzeichnis namens Trac hinzufügen und es dann einfach benutzen! Nö! Erstmal liegt Trac in "/var/lib/trac". Und es ist auch komplett in Python geschrieben, und nicht in PHP. D.h., um es Apache fähig zu machen brauch man für diesen ein Python Modul. Ansonsten stellt Trac den sog. Trac Daemon aka tracd bereit, einen Webserver. Der lief anfangs nur via Kommandozeile aber nicht per Init-Skript; erst als ich den Kram aus $TRACD_OPTS in "/etc/conf.d/tracd" löschte, wollte er starten.

Trac kam also nicht mit meinem Apache klar - jedenfalls nicht so einfach wie ich mir das vorgestellt hatte. Ich versuchte es krampfhaft dennoch; später war mir allerdings der Aufwand mit den vHosts einfach zu hoch und ich ließ es bleiben. Das nächste war der Datenbank Kram. Trac unterstützt (in diesem Moment) SQlite, PostgreSQL und MySQL. Da ich MySQL bereits eingerichtet hatte lag die Entscheidung auf der Hand. Das war ein Fehler. Trac warnt aber vor seiner MySQL Unterstütztung und bezeichnet sie als "experimental". War mir egal.

Ich richtete also ein neues Trac Projekt ein: "trac-admin /var/lib/trac/blah initenv". Ich füllte einen Kommandozeilenfragebogen aus und es ging los. Das hatte, mal abgesehen von den vorher genannten Gründen, aufgrund der Tatsache dass man den "trac" Eintrag in der MySQL DB manuell erstellen musste, nicht problemlos geklappt. Ich tat es also mehrere Male und irgendwann war ich einigermaßen zufrieden mit dem Ergebnis.

Eine weitere Odyssee hatte ich mit der Rechteverwaltung. Es funktionierte zwar alles, aber ich konnte mich einfach nicht authentifizieren, um Inhalte verändern zu können. Auch hier bietet Trac zahlreiche Möglichkeiten. Nach dem Klicken auf Login kam jedes Mal: "Authentication information not available. Please refer to the installation documentation" was nicht soooo aufschlussreich war. Ich probierte also so ziemlich alles aus was in der Dokumentation erwähnt wurde. Und ldap Krams, was mich wieder dazu brachte an Apache herumzufummeln. Ich werde nicht lange um den heißen Brei herumreden... es hat mich bereits Stunden gekostet herauszufinden, was wohl die beste Konfiguration für mein System ist, also will ich jetzt keine Zeit mehr vergeuden :-). Tada:

Via Trac Daemon mit SQlite DB in einer lokalen Datei mit "basic authentification" (Standalone) mittels .htpasswd. Das klappt alles bei mir. Bloß bis ich das erstmal alles begriffen hatte! Ganz wichtig ist folgendes: "tracd --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname" - Na? Alles klar? Also übersetzt heißt das folgendes (und so ungefähr sieht das auch in meiner "/etc/conf.d/tracd" aus):

PROJ="/var/lib/trac/blah"
TRACD_OPTS="--basic-auth=Blah,$PROJ/.htpasswd,$PROJ $PROJ"

Nicht vergessen ein .htpasswd File in $PROJ zu erstellen! Das geht wirklich ganz einfach mit dem gleichnamigen Befehl. Und dann sollte auch schon alles klappen. Das ist keine Installationsanleitung für einen Produktionsserver, aber wohl für ein kleines Heimprojekt und ein paar Beteiligte.

Bis auf die, für Einsteiger, relativ schwierige Installation finde ich das Projekt wirklich gelungen. Es macht Spaß damit zu arbeiten und vereint viele altbekannte Features auf einfache Weise, die einem einen nicht unwesentlichen Teil Arbeit abnehmen können. Ich werde bestimmt noch öfter über Trac reden in Zukunft...

Freitag, 23. Januar 2009

// TODO: Liste

Mir ist vorhin aufgefallen, dass ich wirklich viele TODO Kommentare in meinen Sourcen verwende.

Beispiel:
// TODO: Free Resources

Nervig wird es dann, wenn man mal ein paar erledigen möchte - denn die müsste ich dann erstmal überall zusammensuchen. Schön wäre eine Liste die mir gleich alle Vorkommnisse, inklusive Dateinamen, Zeilennummer und Inhalt anzeigt. Also hab ich mal ein kleines Skript zusammengehax0rt welches genau das tut für mich. So sieht die Ausgabe aus:

control.h, 161  : Remove this later
prog.h, 7 : Implement error handling. Exceptions and Assertions.
prog.h, 57 : This is a temporary solution.
prog.h, 61 : Make a ref counter for destroying this
test.cpp, 151 : Free Resources Here */
test.cpp, 182 : Make this dynamic
test.cpp, 188 : Free resources

Und das alles (praktisch) mit einer einzigen Zeile:
#/bin/bash
egrep -n 'TODO' src/*.{h,cpp} | \
perl -pe 's#(?:src/)+(.+):+([0-9]+):+.*TODO:?\s?(.+)$#"\1" \2 "\3" #g' | \
xargs printf '%20s, %-4d : %s\n'

Ist das nicht genial? Der blaue Part sollte angepasst werden. :-)

Freitag, 16. Januar 2009

WLAN Signal Power Beep Script

Wieder einmal wurde ich beeindruckt von der IT-Solution™-Power, die Linux dem Normalsterblichen völlig selbstverständlich zur Verfügung stellt. Mein Problem war im Prinzip, dass sich mein WLAN Adapter draußen befindet und ich beim Ausrichten nicht auf meinen Bildschirm schauen konnte wie gut die Signalstärke war. Also schrieb ich mir schnell ein Skript welches mir die 'Link Quality' in Audio Signale mittels PC-Speaker ausgibt - denn die konnte ich draußen noch sehr gut hören.

while true; do

QUALY=`/sbin/iwconfig wlan0 | /bin/grep "Link Quality" | /usr/bin/perl -pe 's/.*=(\d+)\/\d+.*/$1/g'`
FREQ=$(($QUALY * 100))

if [ $FREQ == 0 ]; then
FREQ=100;
fi

echo "Beeping at freq $FREQ"
sleep 1 && /usr/bin/beep -f $FREQ -r 2

done

Natürlich hätte man das auch mit Windows machen können, aber eben nicht so schnell & einfach. Das 'Link Quality' in Zeile 3 gilt anzupassen, sollte es in deutsch sein. Das Kernel Modul für den PC-Speaker sollte geladen sein sowie das Programm `beep` installiert.

Update: Zugegeben, beep ist nicht gerade sehr flexibel. Man kann die Lautstärke nicht einstellen, Ausgabe über Kopfhörer nicht möglich usw. Außerdem musste ich mittlerweile feststellen dass die 'Link Quality' nicht sehr ausschlaggebend für die Gesamt-Qualität ist. Selbst bei über 50% kann die Verbindung immer noch schnell zusammenbrechen wenn der Signal Level einfach zu schlecht ist. Also habe ich mein Skript ein wenig modifiziert, Voraussetzung diesmal ist übrigens sox und eine geeignete Sound-Datei. Ich gehe hier von einem Mindest Signal Level von -90 aus und mein Interface ist wlan0:

while true; do

QUALY=`sudo iwconfig wlan0 | grep "Signal level" | perl -pe 's#.*Signal level:(-\d+) dBm.*#$1#'`
PITCH=`echo "scale=2; $(((92-($QUALY*-1))))/0.01" | bc`
echo -ne "\r$PITCH"
sleep 0.5 && play -q "beep.wav" pitch $PITCH

done

Freitag, 26. Dezember 2008

Gentoo LibMSN Ebuild

So, da ich gerade mit der libmsn arbeite, und diese sich noch nicht im Portage von Gentoo befindet, habe ich mal eben ein eigenes ebuild gebastelt. Und das ist gar nicht mal so schlecht geworden für den ersten Versuch.

begin-base64 644 libmsn-4.0_beta2.ebuild
IyBDb3B5cmlnaHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSB2MgojICRIZWFkZXI6ICQKCkVBUEk9IjEiCgppbmhl
cml0IGV1dGlscyBjbWFrZS11dGlscwoKTVlfUD0ke1AvX2JldGEvLWJldGF9
CgpERVNDUklQVElPTj0iTGlibXNuIGlzIGEgcmV1c2FibGUsIG9wZW4tc291
cmNlLCBmdWxseSBkb2N1bWVudGVkIGxpYnJhcnkgZm9yCmNvbm5lY3Rpbmcg
dG8gTWljcm9zb2Z0J3MgTVNOIE1lc3NlbmdlciBzZXJ2aWNlLiIKSE9NRVBB
R0U9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlibXNuIgpT
UkNfVVJJPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC8ke1BO
fS8ke01ZX1B9LnRhci5iejIiCgpMSUNFTlNFPSJHUEwtMiIKU0xPVD0iMCIK
S0VZV09SRFM9In54ODYiCklVU0U9IiIKCkRFUEVORD0iZGV2LXV0aWwvY21h
a2UKCWRldi1saWJzL29wZW5zc2wiOwpSREVQRU5EPSIiCgpTPSIke1dPUktE
SVJ9LyR7TVlfUH0iCgpzcmNfY29tcGlsZSgpIHsKCWNkICIke1N9IgoJY21h
a2UgLgoJbWFrZQp9CgpzcmNfaW5zdGFsbCgpIHsKCWNtYWtlLXV0aWxzX3Ny
Y19pbnN0YWxsCn0K
====


Das .ebuild file in /usr/local/portage/net-libs/libmsn legen, dann ebuild libmsn-4.0_beta2.ebuild digest um ein Manifest zu erstellen und schließlich sudo emerge libmsn (nicht vergessen package.keywords zu ändern). Wenn das geschafft ist sieht das ganze so aus.