Qt5: LoadLibrary-Fehler mit RDP unter Windows (ATI, OpenGL, Nextcloud)

Das Qt-Framework wird von vielen Projekten genutzt um grafische Oberflächen auf allen Betriebssystemen einheitlich entwickeln zu können. Bekannte Softwarepakete, welche Qt nutzen, sind unter Anderem: Nextcloud-Client, Owncloud-Client, FileZilla, Quassel, Mumble, MiniTube, Bitcoin-Qt, Scribus, LuminanceHDR, Audacious, Clementine, LMMS, VLC, AviDemux-qt, Shotcut, OpenShot, LibreCAD, FreeCAD, OpenSCAD, QOwnNotes, Calibre, KeePassX, KeePassXC, Wireshark und BlueStacks.

Eigentlich eine praktische Sache, jedoch mit einem Haken: Mit Qt5 versuchte man viele grafische Operationen per Hardwarebeschleunigung zu erledigen. Dies sorgt für schnellere Programme und weniger Systemlast. Für die Ansteuerung der Grafikkarte nutzt man hierbei OpenGL, welches auf allen gängigen Betriebssystemen verfügbar ist. Leider tritt man sich hierbei auch einige Probleme ein, so ist z.B. Windows dafür bekannt qualitativ zweifelhafte Treiber zu verteilen, welche stark auf Gaming optimiert sind, aber bei anderen Operationen gerne ins Straucheln kommen.

Ein recht verbreitetes Problem tritt dann auf, wenn eine AMD-Grafikkarte wie z.B. Radeon oder im System steckt, man jedoch auf den Windows-Rechner per Remote Desktop (RDP) zugreift. Windows lädt – auch wenn RDP genutzt wird – die Grafikkartentreiber. Ein Fehler in den ATI-Treibern, welcher bereits seit Ende der 2010er-Jahre bekannt ist, führt jedoch dazu, dass in RDP-Sitzungen Grafikoperationen nicht in Software ausgeführt oder von der Grafikkarte berechnet und zurückgegeben werden, sondern sie versuchen diese Trotzdem komplett in der GPU zu verarbeiten und brechen die Anfrage letztendlich ab. In vielen Anwendungen äußert sich das in fehlenden Grafikelementen oder Fehlermeldungen. So lässt sich z.B. der Nextcloud-Client gar nicht starten und Quittiert den Versuch die GUI per RDP zu öffnen mit einem fatalen Fehler. Es ist somit nicht möglich die Software per RDP zu starten.

Fehlermeldung NextCloud-Client: “LoadLibrary failed with error 87: The parameter is incorrect.”

Glücklicherweise kann man sich hierbei einer Eigenheit von “Shared Libraries” zu nutze machen, welche peeter123 auf GitHub vorschlägt: Jede App bevorzugt seine eigene Version, nur wenn sie selbst nichts mitliefert wird auf jene des Systems zurückgegriffen. Im Falle des OpenGL-Bugs kann man also einfach statt der Microsoft/ATI-Version eine weniger kaputte nutzen. Hierzu eignet sich z.B. die Variante des Mesa-Projektes, welche die OpenGL-Operationen nicht direkt an die Grafikkarte sendet. Um diese nun einzubinden lädt man auf der Releases-Seite die letzte Release-Version für mingw herunter (mesa3d-xx.yy.zz-release-mingw.7z), öffnet diese (z.B. mit 7Zip) und kopiert aus dem Ordner x64 (für 64-Bit-Systeme) die Datei “opengl32.dll” in den Ordner des betroffenen Programms, also z.B. C:\Program Files\Nextcloud. Hierdurch greift die Änderung nur für diese eine App und beeinflusst nicht alle installieren Programme. Fortan sollten die Operationen der Software ohne GPU-Treiber laufen und die Applikation somit auch per RDP lauffähig sein.

Durch diese Änderung verliert man zur potentiell etwas Geschwindigkeit in der betroffenen App, dies sollte bei aktuellen Systemen aber nicht groß auffallen – insbesondere, wenn man diese ohnehin nicht häufig aktiv nutzt. Immerhin ist die Software so auch remote nutzbar. Mit fortschreitender Migration auf Qt6 sollte sich das Problem mit der Zeit auch ganz von selbst erledigen: Dies nutzt statt OpenGL die jeweiligen Funktionen des Betriebssystems, welche auch auf Windows nicht ganz so kaputt sind.

BitBastelei #459 – Entstör-Zwischenstecker. Oder doch eher Strom-Magie?

BitBastelei #459 - Entstör-Zwischenstecker. Oder doch eher Strom-Magie?

(2 GB) 00:19:08

2021-10-17 10:00 🛈

Im HiFi-Bereich tummeln sich so einige seltsame Konstrukte herum, ein solches ist mir nun vor die Nase gekommen: Ein Zwischenstecker des Typs Berker 0111 für die Steckdose soll “Störungen” verhindern. Welche? Steht nicht drauf. Wie? Offenbar auch Geheim. Einzige Angabe: 400W. Also packen wir uns mal den Schraubendreher und schauen, ob wir das Geheimnis lüften können.

Inhalt

  • 00:00 Was ist das überhaupt?
  • 01:10 Sicherungen
  • 03:23 Innenleben
  • 08:47 Induktivitätsschätzung
  • 09:47 Zusammenbau
  • 10:51 Simulation: resistive und kapazitive Lasten
  • 14:45 Anstiegszeit und EMV
  • 16:40 Macht es Sinn?

Transparenz

Das Gerät ist in einer alten Installation aufgetaucht. Die ursprüngliche Quelle kann nicht ermittelt werden.

BitBastelei #458 – iMAX B6 Displaytausch & 3S-Akku laden

BitBastelei #458 - iMAX B6 Displaytausch & 3S-Akku laden

(2 GB) 00:21:14

2021-10-10 10:00 🛈

Wie war das mit den Hölzchen und Stöckchen? Eigentlich wollte ich nur “mal schnell” den Akku meines DIY-Bohrschraubers laden. Da ich dessen BMS noch nicht gemessen habe sollte es der iMAX B6 richten, der dank Li-Ion-Einstellungen und Balancing dafür eigentlich perfekt geeignet ist. Dummerweise hat die berüchtigte Bastelkiste wieder zugeschlagen: Das Display ist defekt. Also gehen wir mal eine Runde reparieren.

Inhalt

  • 00:00 Intro
  • 00:10 Akkuanforderung
  • 00:51 Imax-Unfall
  • 05:15 Reparatur
  • 08:09 Lichtprobleme
  • 10:14 Mini-Funktionstest
  • 11:13 Balancing-Anschluss
  • 16:13 Akku laden
  • 18:49 Steckersicherung
  • 20:31 Fertig.

Fehler und Ergänzungen

  • 00:24 Leer im Sinne von ca. 3.5V/Zelle. Eigentlich noch einiges an Kapazität, bei hoher Last bricht die Spannung jedoch so weit ein, dass die Schutzbeschaltung anspricht

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

Raspian: AbhängigkeitsFehler bei Upgrade von Buster zu Bullseye (unreleased)

Normalerweise ist ein Upgrade von Debian zu einer neueren Version keine große Sache: System in aktuellen Release aktualisieren (apt dist-upgrade), Sources anpassen, full-upgrade, fertig. Leider scheint Raspian hier wieder eine Extrawurst zu benötigen. Nach Ändern der Sources von Buster (Debian 10) zu Bullseye (Debian 11) gab es beim full-upgrade einen Abhängigkeitsfehler:

Calculating upgrade... Error!
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Manuell festgenagelte Pakete gab es meinerseits nicht, entsprechend hätte ich erwartet, dass die Abhängigkeiten automatisch aufgelöst werden können. Abhilfe schaffte letztendlich das Update von GCC vor dem full-upgrade mittels apt install gcc-8-base per Hand zu installieren. Hierdurch wurden die beteiligten Pakete vorab aktualisiert und das Abhängigkeitsproblem somit aufgelöst.

Vorsicht: Bullseye für Raspian ist auch 2 Monate nach dem Release von Debian 11 noch nicht offiziell freigegeben. Viele Systemteile, die Raspian gegenüber einem “echten” Debian ändert, sind noch nicht lauffähig. So startet nach dem Update beispielsweise dhcpcd nicht mehr. Schaltet man die Raspian-Anpassungen ab (z.B. in dem man Systemd, Networkmanager o.Ä. nutzt) ist das System jedoch prinzipiell lauffähig.

BitBastelei #457 – Produkte Vergleichen am Beispiel einer Tiefkühltruhe

BitBastelei #457 - Produkte Vergleichen am Beispiel einer Tiefkühltruhe

(2 GB) 00:35:37

2021-10-03 10:00 🛈

Heute mal ganz was Anderes: In letzter Zeit bekam ich von einigen Leuten auf die Frage, warum sie denn $Produkt und nicht $InVielenPunktenBesseresProdukt gekauft haben Antworten wie “das sah halt besser aus” oder “das war runtergesetzt”. Für mich oft unverständlich, da man durch solche Blindkäufe schnell Geräte vor der Nase hat, welche die eigenen Ansprüche – wenn überhaupt – nur notdürftig erfüllen. Da bei mir eine größere Anschaffung fällig war zeige ich also heute mal, wie ich Produkte vergleiche und versuche das für mich passendste zu finden.

Inhalt

  • 00:00 Intro
  • 00:51 Tiefkühltheorie und Ist-Aufnahme
  • 05:30 Wunschliste – Soll-Konzept
  • 06:59 Angebote Suchen und Erfassen
  • 15:05 Angebote sortieren und einfacher Vergleich
  • 17:01 Verschiedene Sichtweisen
  • 23:28 Die Sache mit dem Energy-Label
  • 25:16 Schrank vs. Truhe
  • 26:42 Entscheidungszeit
  • 27:35 Kurzer Blick auf’s Produkt

Fehler und Ergänzungen

  • 07:41 Offenbar hat Amazon mein Löschen nicht genommen. Vermutlich hätte ich da über andere Wege gehen müssen
  • 08:13 Ich öffne alle interessanten Angebote in einem neuen Hintergrund-Tab um mir die Infos später rauszuschreiben. In vielen Browsern geht das, in dem man mit der mittleren Maustaste einen Link anklickt.
  • 10:08 Ich bin ohne wirkliches Limit auf die Suche gegangen. In den bisherigen Shops schien es für unter 400€ ausreichend Angebote zu geben, daher hatte ich den Preis während der Suche als “weiches” Limit definiert um die Anzahl der zu vergleichenden Angebote zu beschränken.
  • 19:13 Durch ein Dollarzeichen($) sagt man Calc (oder auch Excel), dass er diese Angabe beim Ziehen nicht anfassen soll. G8 bleibt also immer G8 und wird nicht zu G9, G10, …
  • 23:25 Hier hätte man auch noch kWh/Jahr/Liter rechnen können um das nochmal deutlicher zu sehen
  • –:– Das von mir ausgesuchte Gerät ist aktuell bei Amazon nicht mehr Lieferbar. Andere Händler haben es wohl noch im Angebot
  • –:– Das Gerät ist spezifisch für meine Anforderungen und muss nicht immer die beste Wahl sein
  • –:– Nach einem Monat scheint die Truhe deutlich unter den Herstellerwerten zu liegen – aktuell dürften es im Jahr knapp 93kWh werden

Transparenz

Die Truhe wurden selbst gekauft und bezahlt. Ich bin Teilnehmer beim amazon.de Partnerprogramm. Durch Nutzung von Amazon-Links im Video oder auf meiner Webseite erkennt Amazon, dass Ihr über meine Seite zu ihnen gefunden habt. Ich werde prozentual an hierüber erzielten Umsätzen beteiligt, die Preise ändern sich hierdurch nicht.

BitBastlei #456 – CF210SP Radio-Bausatz

BitBastlei #456 - CF210SP Radio-Bausatz

(2 GB) 00:45:19

2021-09-26 13:00 🛈

Bausätze, die außer einer Lötübung keinen praktischen Nutzen haben, gibt es überall. Dieser hier verspricht das Gegenteil: Am Ende soll man ein funktionsfähiges Radio für analoge Sender (FM/AM) in den Händen halten. Ob das funktioniert?

Inhalt

  • 00:00 Hallo Bausatz: Lieferumfang
  • 07:09 Zusammenbau
  • 38:53 Funktionstest
  • 41:11 Fazit

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #445 – LiFePO4: Die besseren Lithium-Akkus?

BitBastelei #445 - LiFePO4: Die besseren Lithium-Akkus?

(2 GB) 00:28:48

2021-09-19 10:00 🛈

Wenn man von Lithium-Akkus spricht, meint man oft LCO-Zellen – Lithium-Cobaltdioxid. Es gibt aber auch andere Zellchemien wie LiFePO4/LEP/LFP, welche ganz eigene Vor- und Nachteile haben. Welche Unterschiede das sind und wie sich LiFePO4 als Bastlernutzen lässt schauen wir in diesem Video.

Inhalt

  • 00:00 LCO vs. LFP: Unterschiede
  • 08:08 14500 und Alkaline-Ersatz
  • 10:51 LFP Schutz, Ladeboards
  • 20:27 TP5000: Ladestrom anpassen und Zuleitung
  • 22:44 Fertiger Aufbau mit ESP8266-Direktversorgung
  • 26:44 Fazit

Links zum Thema

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #454 – Hitachi VT-62E Videorekorder

BitBastelei #454 - Hitachi VT-62E Videorekorder

(2 GB) 00:27:28

2021-09-12 10:00 🛈

In den letzten Videos hatte ich mir einige VHS-Geräte angesehen um zukünftig alte Kassetten damit zu überspielen. In diesem Video war auch kurz ein VT-62E des Herstellers Hitachi zu sehen, welcher durch sein Design hervorstach, aber leider nicht funktionierte. Dieses mal schauen wir uns dieses Gerät mal genauer an und versuchen ihm neues Leben einzuhauchen. Mit etwas guten Willen, einem Satz Antriebsriemen und Unterstützung des 3D-Druckers sollte ein solcher Versuch sicher nicht ganz vergebens sein.

Inhalt

  • 00:00 Einleitung
  • 00:50 Besonderheiten des Gerätes
  • 05:59 Blick ins Innere / Fehlersuche
  • 15:28 Reparatur: Riemen
  • 20:57 Reparatur: Antriebsarm
  • 24:24 Funktionstest

Links zum Thema

Transparenz

Das gezeigte Gerät stammt aus den Beständen eines Bekannten und war zur Entsorgung vorgesehen.

BitBastelei #453 – Regenmesser mit “Tipping Bucket” (Kippwaage)

BitBastelei #453 - Regenmesser mit "Tipping Bucket" (Kippwaage)

(1 GB) 00:10:16

2021-09-05 10:00 🛈

Immer wieder hört man in den Medien den Begriff “Niederschlag”, also Regen und Co. Wie viel von oben herunter kommt wird hierzulande meist in Millimetern (mm) gemessen. Heute schauen wir mal was diese Angabe bedeutet und wie man Regen & Co automatisch messen kann.

Inhalt

  • 00:00 Einleitung
  • 00:55 Was ist Niederschlag
  • 01:08 Was bedeutet mm bei Niederschlag
  • 03:42 Messung mit Behälter
  • 05:04 Kippwaagen-Prinzip
  • 07:15 Automatische Messung
  • 09:27 Messgerät != Vorhersage

Links

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #452 – Mobiler Transistor-Tester durch Li-Ion Akku Umbau

BitBastelei #452 - Mobiler Transistor-Tester durch Li-Ion Akku Umbau

(2 GB) 00:36:59

2021-08-29 10:00 🛈

Ein recht günstiger und hilfreicher Helfer auf der Werkbank ist einer der zahlreichen “Transistor Tester”-Platinen, welche auf dem gleichnamigen Projekt von mikrocontroller.net basieren. Inzwischen gibt es nicht nur fertige Platinen, sondern auch gleich passende Gehäuse von diversen Herstellern. Eins haben die meisten aber gemeinsam: Sie sind für ein externes Netzteil oder eine 9V-Batterie ausgelegt. Nix für mich, es gibt Li-Ion-Zellen und USB, also bauen wir mal eines dieser Geräte auf Akkubetrieb um.

Inhalt

  • 00:00 Der Transistor Tester
  • 02:46 Gehäuse
  • 03:35 Erster Test
  • 06:54 Gehäuseeinbau
  • 10:35 Akku-Pläne
  • 11:41 Li-Ion Lade/Boost-Kombo
  • 16:06 Zellschutz
  • 18:43 Soft Power-Off nachrüsten
  • 32:27 Zusammenbau
  • 33:06 Fazit

Ergänzungen

  • Laut Peer, der mir die Li-Ion-Module geschickt hatte, nennen diese sich hr-357 oder J5019.

Links zum Thema

Transparenz

Testgerät und Gehäuse wurden selbst gekauft und bezahlt. Das Li-Ion-Modul wurde vom Zuschauer Peer zur Verfügung gestellt.

Nerd Inside