Bild Der WebCam Im Neuen Skypeforlinux 64-bit Kippen

Vorwort,
manch Eine(r) mag nun denken: "warum holt der soweit aus, da reichen doch zwei Befehlszeilen." Das wurde im Thema zur Lösung in 74 Antworten auch so gehalten, aber es war mir wichtig, diese einzelnen Schritte zur Lösung für geplagte ASUS und skypeforlinux Nutzer hier zusammen gefasst in einem WIKI zu hinterlegen. Da die Firmen Supports dazu anscheinend nicht in der Lage waren bedurfte es einer sechs Monate dauernden Tüftelei in diesem Thema.

Das Problem
besteht in einem auf dem Kopf stehenden (horizontal gekippten) Kamerabild und zeigt sich überwiegend in Notebooks der ASUS K- und F- Serie in der Konstellation mit LinuxMint 18.3 64-bit und „skypeforlinux v.8.x 64-bit“. Auch bei Anwendungen die per Webinterface im Browser z.B. google-chrome" oder Firefox auf:https://web.skype.com/de via WEB-RTC Protokoll auf die Bilddaten der Kamera zugreifen steht das Bild auf dem Kopf. In der Vergangenheit gab es für die nicht mehr unterstützten alten „Skype Versionen 4.x + 5.x“ hier im Board und im Netz verschiedene Lösungen, die aber seit Veröffentlichung des neuen „skypeforlinux“ seit Oktober 2017 nicht mehr greifen.

Die Ursache
liegt bauseits an einem um 180° gedreht montierten integrierten Kamerachip der „Chicony USB 2.0 Webcam“. Mit anderen lokalen Kamera-Anwendungen wie GUVCview, Cheese und VLC liefert die Kamera jedoch ein normal stehendes Bild. Diese Programme scheinen den Geräte spezifischen Fehler zu erkennen oder wurden durch Upgrades angepasst, wodurch er kompensiert wird. Unter Windows fällt der Montagefehler nicht auf, da für die Kamera passende Treiber installiert werden oder Kamera-Anwendungen angepasste Treiber mitbringen.

Was sagen die Supports dazu?
Der ASUS-Support bestätigt, dass das Kamera-Modul um 180° gedreht, also verkehrt herum, montiert ist und aufgrund zu kurzer Kabel nicht gedreht werden kann, was zur Folge hätte, dass eine zusätzliche Bohrung für die Kontroll-LED im Display-Rahmen angebracht werden müsste.
Der Skype-Support bietet seit November 2017 dazu keine Lösung an und verwies mich an den Skype-Kundendienst, der seither erfolglos ein Ticket bearbeitet. Mehrfach wurden vom Support die Kamera- und Treiber-Daten sowie Logdateien angefordert obwohl das neue skypeforlinux intern eine Funktion besitzt, um diese Daten im Chat an einen Skype-Bot zu versenden. Insgesamt ist das wahrlich keine Glanzleistung dieser Firmen.

Edit: Am 07.06.2018 meldete sich der Skype-Kundendienst mit dieser Rückmeldung, Zitat: "skypeforlinux ist für Ubuntu 17.04 ungetestet und ich müsse auf Ubuntu 14.04 downgraden." Dazu sag ich jetzt weiter gar nichts, dies würde doch einen immensen Rückschritt von LM18.3 zurück zu LM17.3 bedeuten.

Die Aufgabenstellung,
besteht nun darin ohne jegliche Support-Unterstützung und mechanische Bastelarbeiten am Notebook das Bild der WebCam unter LinuxMint 18.3 Cinnamon 64-bit und neuem "skypeforlinux ab Version 8.x"< lagerichtig darzustellen.

Ausgangslage der verwendeten Hard- und Software:
Notebook ASUS K52JC, integrierte Chicony USB 2.0 0.3M UVC WebCam
LinuxMint 18.3 Cinnamon 64-bit, Kernel 4.4.0-127 generic
Vier (4) mit Synaptic installierten Pakete:
skypeforlinux (8.10.0.4)
v4l2ucp (2.0.2-4)
v4l-utils (1.10.0-1)
guvcview (2.0.2+debian-3); (Anwendung zur Kamera-Bild-Refferenz)

Wo und wie die WebCam und Treiber ins System integriert sind zeigen die Befehle
zur Abfrage des USB-BUS:

~ $ lsusb
hier nur die Rückmeldung der Kamera
Bus 001 Device 004: ID 04f2:b1e5 Chicony Electronics Co., Ltd
und dieser
~ $ sudo lshw -sanitizedie Rückmeldung zeigt eine lange Ausgabe, interessant ist der Bereich *-usb / Video *-usb:1
                      Beschreibung: Video
                      Produkt: USB2.0 0.3M UVC WebCam
                      Hersteller: Chicony Electronics Co., Ltd.
                      Physische ID: 2
                      Bus-Informationen: usb@1:1.2
                      Version: 20.69
                      Fähigkeiten: usb-2.00
                      Konfiguration: driver=uvcvideo maxpower=500mA speed=480Mbit/s

zur Treiber Abfrage:

~ $ lsmod | grep videodevvideodev              180224  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
media                  24576  2 uvcvideo,videodev

Alle Informationen sind zusammen getragen und es konnte losgehen.

1.) Der Weg zur Lösung
führte über eine lange Recherche mit bisher für das „alte Skype“ aufgezeigten Lösungswegen durch Kombination von Befehlen oder Zuhilfenahme von Tools. Im Netz, im Skype Forum, hier im LMU-Board und zuletzt in meinem eigenen Thema gelangte ich abschließend zur Erkenntnis, dass zur Lösung nur eine von zwei möglichen Variablen benötigt wird.
Der Clou dabei ist, dass diese benötigen Variablen bereits durch die LM18.3 Cin. 64-bit Grund-Installation im System vorhandenen sind. Somit kann das Problem mit Bordmitteln gelöst werden, wobei eine der Variablen als sogenannter: „LD_PRELOAD=“ dem „skypeforlinux“ Startbefehl vorangestellt wird und in Folge das Kamerabild lagerichtig angezeigt wird.

Die Namen der benötigten Variablen, wovon laut Recherche eine besser mit dem System harmonieren soll:

v4l1compat.sound
v4l2convert.so

Zur Erstellung des bildkorrigierenden Startbefehls müssen zunächst die Speicherpfade der Variablen und Binärdatei (skypeforlinux) mit dem Befehl „locate“ ermittelt werden.
Speicherorte der Variblen:

~ $ locate v4l1compat.so
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so

~ $ locate v4l2convert.so
/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so

Speicherort der Binärdatei:
~ $ locate skypeforlinux
/usr/bin/skypeforlinux

>>>Die rückgemeldeten Speicherpfade benötigen wir gleich in den Befehlen.<<<

1.1) Zum Testen der Variablen auf System-Harmonie bestehen zwei Möglichkeiten:
1.1.1) im Terminal
1.1.2) oder mit dem GUI der Anwendung „v4l2ucp“.

zu 1.1.1) Das Testen der Variablen im Terminal,
besteht darin jeweils einen der rückgemeldeten Speicherpfade zur Variable als: „LD_PRELOAD=“ vor den /Speicherpfad (Start-Befehl) der Binärdatei: "/usr/bin/skypeforlinux" zu stellen.
Die kompletten Terminal Befehle lauten
für die Erste Variable:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so /usr/bin/skypeforlinux
für die Zweite Variable:LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/bin/skypeforlinuxNach Ausführen der Befehle wird sich „skypeforlinux“ öffnen und sollte nach Klick über: Extras > Audio und Videoeinstellungen ein lagerichtiges Testbild anzeigen.

zu 1.1.2) Das Testen der Variablen mit dem GUI „v4l2ucp“
beginnt mit der Terminal-Eingabe von:

v4l2ucpanschließend öffnet sich das GUI in einem etwas zu grossen Fenster das jedoch mit Halten der Taste [Alt] und der Maus verschoben werden kann. Die Anwendung „v4l2ucp“ erlaubt im Hauptfenster weitere Einstellmöglichkeiten und ermöglicht das Testen von Variablen und Applikationen. Dazu klickt man in der Menüleiste auf: „Preview“ > „Configure Preview...“ und gibt in die obere Befehlszeile (Application to use) den vollen Pfad zur Binärdatei „skypeforlinux“ und in der Spalte Links-Unten (Environment) den vollen Pfad zur Variablen ein, danach werden die Einträge mit: „add Value“ und Rechts-Unten mit: [OK] übernommen. Zuletzt wird die Funktion mit Klick auf „Preview“ > „Start Preview“ getestet. Nun sollte sich „skypeforlinux“ öffnen und über: Extras > Audio und Videoeinstellungen ein lagerichtiges Testbild anzeigen.

Der Screenshot zeigt die im Reiter: Configure Preview....  eingetragenen Befehle.
v4l2ucp PreviewSetting
v4l2ucp PreviewSetting
Ich möchte hier nicht weiter auf „v4l2ucp“ eingehen denn weitere Infos dazu gibt‘s im UU-Wiki.

2. Der ermittelte „neue Startbefehl“ kann auf verschiedene Weise dauerhaft in einem Starter oder Script hinterlegt werden:
2.1.) den alten Startbefehl im vorhandenen Starter ersetzen.
2.2.) den neuen Startbefehl in einem neuen Starter verwenden.
2.3.) der neuen Startbefehl in einem Script speichern und mit einem neuen Starter auszuführen.

zu 2.1.) Alten Start-Befehl im vorhandenem Starter ersetzen,
dazu über die Re.-Maus-Taste > Menü > Einrichten > Menü > Menübearbeitung öffnen > Hauptmenü > Internet > Eintrag: Skypeforlinux / Eigenschaften / Starter-Name: in „skypeforlinux_invert“ ändern, den Neuen Befehl mit Copy/Paste in die Command-Zeile einfügen, ein: "sh -c " für den Interpreter, die bash, dem Befehl voranstellen und mit Klick auf [OK] übernehmen.
Der gesamte Befehl als Beispiel der Ersten Variable:

sh -c "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so /usr/bin/skypeforlinux"

zu 2.2.) Neuen Startbefehl in einem neuen Starter verwenden,
dazu einen neuen Starter erstellen mit: Re.-Maus-Taste > Menü > Einrichten > Menü > Menübearbeitung öffnen > Hauptmenü > Internet: Neuer Eintrag/ Starter-Name: „skypeforlinux invert“ und
den Neuen Befehl mit Copy/Paste in die Command-Zeile übertragen und ein: "sh -c " für den Interpreter, die bash, dem Befehl voranstellen.
Der gesamte Befehl als Beispiel Zweiten Variable:

sh -c "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/bin/skypeforlinux"
Zuletzt noch das Starter-Icon in:/usr/share/icons/Mint-X/apps/96/skypeforlinux.svg bestimmen und mit Klick auf [OK] übernehmen.
Screenshot eines fertigen Starters...
Starter mit Variable
Starter mit Variable
zu 2.3.) Neuen Startbefehl in einem Script speichern und mit einem Neuen Starter ausführen
bedeutet, dass zunächst ein Script erstellt werden muss. Da die Scripterstellung vermutlich nicht jedem geläufig ist, geht es Step by Step weiter und beginnt auch gleich mit einer Info: „In einem Script muss der Befehl-String aufgrund von Leerzeichen zwischen den Einzelbefehlen in: " " , sprich= Hochkommata gesetzt werden.“

Die Erstellung des Scriptes beginnt mit einem leeren Dokument, dazu mit: Re.-Maus-Taste > Klick auf freiem Schreibtisch > Neues Dokument anlegen > Leeres Dokument > unbenanntes Dokument öffnen > Einfügen von:

#!/bin/bash für den „bash“ Interpreter
und in die nächste Zeile ein:sh -c gefolgt vom mit Copy/Paste und in "Hochkommata" gesetzten Neuen Befehl z.B.:"LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so /usr/bin/skypeforlinux"Inhalt des Scriptes:#!/bin/bash
sh -c "LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so /usr/bin/skypeforlinux"

und wegen der Farben nochmal als Screenshot im Editor...
script skypeforlinux invert
script skypeforlinux invert
anschließend das Script mit: Speichern unter und der Endung: *.sh z.B. als: "skypeforlinux_invert.sh" im:/home/BENUTZER/binspeichern. Sollte der Ordner /bin im /home/BENUTZER/noch nicht vorhanden sein, ist dieser vor dem Speichern zu erstellen. Nach dem Speichern muss das Script als ausführbar markiert werden, dazu über den Dateimanager "nemo" zum Speicherort des Scripts wechseln und über die Re.-Maus-Taste, Eigenschaften, im Reiter Zugriffsrechte das [ X ] bei >Ausführen< setzen.

Zuletzt wird der /vollständige/Pfad/zum/Script:

sh /home/BENUTZER/bin/skypeforlinux_invert.shin die Command-Zeile eines Starters eingetragen, wobei ein: "sh  " für den Interpreter, die bash, dem Pfad zum Script vorangestellt wird. Die Bezeichnung "/BENUTZER/" steht für den realen User denn die Kürzel $USER und ~/bin werden vom Starter nicht akzeptiert. Abschließend das Starter-Icon mit:/usr/share/icons/Mint-X/apps/96/skypeforlinux.svg bestimmen.

Screenshot des Starters für ein Script...
Launcher Properties Script
Launcher Properties Script

...Fertig...

:D
 
Hinweise:
Auf meinem ASUS K52JC funktionieren Beide als "PRELOAD=" vorgeschalteten Variablen, wodurch die Kamera-Bilddaten um 180° vertikal „geflippt“ an das Neue „skypeforlinux“ durchgereicht werden und somit (endlich) ein lagerichtiges Bild angezeigt wird.

In den offiziellen Quellen ist „skypeforlinux“ nicht tagesaktuell, die aktuellste Version wird auf https://www.skype.com/de/get-skype/ als *.deb zum Download angeboten. Dabei ist zu beachten das Fremdquellen das System gefährden können. Während der Installation mit dem Paketinstaller (gdebi) wird zeitgleich der Aktualisierungsverwaltung eine neue PPA-Quelle: “deb [arch=amd64] https://repo.skype.com/deb stable main“ hinzugefügt.

Quellen und Infos zur Lösung und Erstellung dieses Tutorials:
https://www.linuxmintusers.de/index.php?topic=43241.msg620966#msg620966
https://www.linuxmintusers.de/index.php?topic=35630.msg563963#msg563963
https://www.linuxmintusers.de/index.php?topic=45017
https://wiki.ubuntuusers.de/Skype_f%C3%BCr_Linux/
https://www.skype.com/de/get-skype/
https://wiki.ubuntuusers.de/Webcam/
https://wiki.ubuntuusers.de/Webcam/#Webcam-identifizieren
https://wiki.ubuntu.com/SkypeWebCams
https://wiki.ubuntuusers.de/Webcam/#Bild-drehen
https://wiki.ubuntuusers.de/Webcam/#v4l2ucp
https://wiki.ubuntuusers.de/guvcview/
https://askubuntu.com/questions/973129/skype-for-linux-on-64-bit-asus-with-upside-down-webcam
https://journalxtra.com/linux/skype-video-linux-always-hassle/
https://bugs.chromium.org/p/webrtc/issues/detail?id=3769#c21

Ein Wermutstropfen bleibt,
denn bei Aufruf der Webadresse https://web.skype.com/de im Browser google-chrome wirkt sich die Bildlage Korrektur mit den in "v4l2ucp" vorgeschalteten Variablen nicht positiv aus, da in diesem Fall das WEB-RTC Protokoll verwendet wird. Nach den testhalber für google-chrome angepassten Befehlen z.B.:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so /usr/bin/google-chrome wird nur ein schwarzes Bild angezeigt. Diese Befehle greifen also nicht beim WEB-RTC Protokoll, das wird eine neue Baustelle.

_-_-_kuehhe1, 06.Juni.2018_-_-_

Edit: Am 13.06.2018 wurde dieses WIKI mit LinuxMint 19 (Tara) Cinnamon BETA positiv getestet.