Wenn die Hardware anders heißt…

Neulich erreichte mich folgende (leicht geänderte) Problemanfrage:

„Hi,

hat schon jemand von euch mit der neuen Ubuntu Version herum gespielt?

Ich habe gerade meinen ersten Cleaninstall unter Ubuntu 16.04 gemacht und bekomme hier gerade Probleme mit meinen Scripten. Die verdammte Netzwerkkarte heißt nicht mehr eth0

Weiß jemand von euch, wie meinen alten Interface Name wieder bekomme ?

Die Lösung ist zwar nicht naheliegend, aber recht einfach : „udevd sagen, er solls richten“ 🙂

Was ist udevd ?

Der udevd war früher mal eigenständig, wurde aber auf Fedora in Systemd integriert und ist für eine Art Hausmädchen für Hardwaresachen und andere organisatorische Konfigurationsdinge.

Die Definition liest sich das dann so :

„udev supplies the system software with device events, manages permissions of device nodes and may create
additional symlinks in the /dev directory, or renames network interfaces. The kernel usually just assigns
unpredictable device names based on the order of discovery. Meaningful symlinks or network device names
provide a way to reliably identify devices based on their properties or current configuration.“

und meint einfach „Hausmeister“ 😉

Und wie löse ich das jetzt mit Hilfe des udevd ?

Im Verzeichnis „/etc/udev“ gibt es den Ordner „rules.d“ in dem Konfigurationen abgelegt werden, die durch die Nummern am Anfang der Dateinamen sortiert ausgeführt werden. Wir legen eine neue Datei namens „/etc/udev/rules.d/70-persistent-net.rules“ an und schreiben das hier rein :

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8139 (8139cp) (custom name provided by external tool)
SUBSYSTEM==“net“, ACTION==“add“, ATTR{dev_id}==“0x0″, ATTR{type}==“1″, KERNEL==“eth*“, NAME=“eth0″

Wenn man nun den Rechner rebootet, wird das Netzwerkinterface vom Kernelnamen ( und das wurde bei Ubuntu geändert, was bei Fedora schon vor Jahren gemacht wurde ) auf „eth0“ umbenannt.

Was ist wenn ich mehr als eine Netzwerkkarte habe ?

Dann kann man sich über die DEV_ID ( Device-ID ) identifizierte einzelne Regeln anlegen, die jede einzelne Netzwerkkarte umbenennen, in was auch immer man will.

 

Erste Rcs von Fedora 24 bereit

Fedora 24 soll in einem Monat bereit sein. Die ersten Tests mit dem RC können ab sofort durchgeführt werden.

Wayland ist noch nicht als Standard aktiviert, kann aber ausprobiert werden. Es wird aber wohl frühestens mit Fedora 25 kommen. Gnome 3.20 ist auch mit dabei. Wie mir die GNOME Entwickler versprochen haben (im Ernst), soll das viele Probleme vom Gnome 3.18 und Nautilus beheben, z.b. das große ICON Problem.

Android Audio an Linux streamen

Heute wollen wir uns mal den umgekehrten Weg anschauen, Audio von Android zu Linux streamen.

Wir könnten dafür natürlich Kodi nehmen, aber Kodi ist ein Overkill, und es soll doch leicht und charmant sein, oder ? 🙂

OK, wir brauchen :

Linux:
Pulseaudio mit PAPrefs
Rygel

Android:
BubbleUPnP

Installiert man Rygel kommen alle nötigen Module mit. BubbleUPnP ist eine gute Android App, die kann ich nur empfehlen, treibt jeden SmartTv besitzenden Vater in den Nervenzusammenbruch 😉

Pulseaudio Setup

zunächst starten wir PAPrefs und aktivieren die ganzen Netzwerkfeatures, also ..

Pulseaudio Netzwerk-Audio-Geräte im lokalen Netzwerk auffindbar machen
Netzwerkservertab -> Alles außer Authentifizierung einschalten

PulseAudio-PAPrefs

Rygel Setup

Dann setupen wir Rygel über die Config: ~/.config/rygel.conf :

[general]
upnp-enabled=true

[MediaExport]
enabled=true
uris=

[External]
enabled=true

[org.gnome.UPnP.MediaServer2.PulseAudio]
enabled=true

und starten es als Benutzer über Shell so :  rygel -n <interfacename> -U -D -t   wobei der Interfacename z.b. enp2s0 lauten könnte, oder auch eth0, die Netzwerkkarte halt.
Mit „ip link“ kann man sich alle Netzwerkkarten anzeigen lassen :

[~]$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 41:16:5d:24:5e:08 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 12:34:01:0a:cd:54 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 12:34:01:0a:cd:54 brd ff:ff:ff:ff:ff:ff

Einfach das richtige Netzwerkinterface nehmen.

Es kommen einige Fehlermeldungen, aber das stört nicht weiter solange der Prozess nicht stoppt ist das leider normal. Es gibt wohl mehr Programmierer deren Programme nur laufen, wenn Sie glücklich unnötige Fehlermeldungen ausspucken können, als ich dachte. Ich kannte da mal jemanden, aber das ist eine andere Geschichte.

Die Ausgabe könnte so aussehen:

Rygel-Message: rygel-acl.vala:143: Es wurde keine alternative Zugriffslistenrichtlinie gefunden. Zugriff wird gewährt.
Rygel-Message: Rygel v0.28.3 wird ausgeführt …
RygelCore-Message: Neue Erweiterung »Playbin« ist verfügbar
RygelCore-Message: Neue Erweiterung »MediaExport« ist verfügbar

** (rygel:9902): WARNING **: Error creating GUPnP context: Failed to find IP of interface virbr0-nic

RygelCore-Message: Neue Erweiterung »org.gnome.UPnP.MediaServer2.PulseAudio« ist verfügbar
RygelCore-Message: Neue Erweiterung »org.gnome.UPnP.MediaServer2.DVBDaemon« ist verfügbar

Android

Jetzt findet man über BubbleUPnP, was man in Ermangelung von All Share auf Samsunggeräten installieren muß, da deren eigene App nach Benutzerbekunden in den Kommentaren im PlayStore „untauglich“ ist. Dort wählt man jetzt einen „Renderer“ aus und findet den Linux PC. Wem das nicht gelingt, der sollte kurz die Firewall droppen und zu sehen, ob es da klemmt. Ein paar Sekunden muß man dem Findeprozess schon zugestehen, also nicht gleich in Panik geraten.

Oben schrieb ich, daß jetzt eine charmante Lösung kommt und das ist sie, denn Rygel taucht als eigenes Programm im Pulseaudio auf und nun kann man den Audiostrom vom Handy auf alle Soundausgaben umverteilen z.b. auch per RTP Multicast ins Netzwerk broadcasten. Der Clou: Im Pulseaudiostrom im Mixer steht sogar drin um welches Lied es sich handelt! 😀