Zum Inhalt springen

Das schmuffligste Blog der Welt

Sinn und Unsinn der passiert

Nostalgie trifft Datensicherung

Viele Retro-Fans kennen das Problem: In irgendeiner Kiste liegen noch Originaldisketten vom C64 – Spiele, selbstgeschriebene BASIC-Programme oder liebevoll zusammengebastelte Demos aus den 80ern.
Die Disketten funktionieren noch, aber wie lange? Magnetische Medien altern, und es wäre schade, diese digitalen Schätze zu verlieren.
Also muss eine Lösung her, um den Inhalt zu sichern – am besten als Disk-Image auf den modernen PC.


Welche Alternativen gibt es – und warum sind sie oft schlechter?

  1. Direktdownload aus dem Internet

    • Vorteil: schnell und einfach.

    • Nachteil: Dein Original ist vielleicht eine seltene Version oder enthält persönliche Daten – die wirst du online kaum finden.

  2. SD2IEC

    • Moderne Lösung, um SD-Karten am C64 zu nutzen.

    • Nachteil: Liest keine Originaldisketten ein, sondern nur Dateien im C64-Format. Kein Ersatz für echte Disk-Images.

  3. 1541-Emulator-Hardware (Ultimate II+, Pi1541)

    • Vorteil: Kompatibel mit D64-Images.

    • Nachteil: Kann nicht direkt die Daten von echten Disketten auf den PC übertragen.

Fazit: Wer echte Disketten archivieren möchte, braucht direkten Zugriff auf ein Commodore 1541-Laufwerk – und hier kommt das XUM1541 ins Spiel.


Was ist das XUM1541?

Das XUM1541 ist ein Adapter, der Commodore-IEC-Laufwerke wie das 1541, 1571 oder 1581 direkt per USB an den PC anschließt.
Damit lassen sich Disketten sektorweise auslesen oder sogar zurückschreiben – ganz ohne Umweg über den C64.
Es gibt fertige Adapter im Handel, man kann sie aber auch selbst löten (Schaltpläne sind frei verfügbar).


Die Software: OpenCBM

Damit der PC mit dem Laufwerk sprechen kann, benötigt man OpenCBM – ein plattformübergreifendes Toolset für Windows, Linux und macOS.
Es bietet Kommandozeilenprogramme, um:

  • Disketten zu formatieren

  • Images zu erstellen

  • Images auf Disketten zu schreiben

  • einzelne Dateien zu übertragen


Installation von OpenCBM

Unter Linux (Debian/Ubuntu)

sudo apt install opencbm

Manchmal ist zusätzlich eine Gruppenzugehörigkeit (plugdev oder uucp) nötig, um auf USB-Geräte zuzugreifen.

Unter Windows

  1. OpenCBM-Paket von der offiziellen Seite herunterladen.

  2. USB-Treiber (libusb) installieren.

  3. OpenCBM-Befehle in die PATH-Variable aufnehmen (optional, aber praktisch).


Wichtige OpenCBM-Befehle

Hier eine Auswahl der meistgenutzten Befehle für den Alltag:

  • Formatieren einer Diskette

    cbmformat 8 "MEINNAME,00"

    (8 ist die Geräte-ID des Laufwerks)

  • Disketten-Image erstellen

    d64copy 8 mein_image.d64
  • Image zurück auf Diskette schreiben

    d64copy mein_image.d64 8
  • Datei von Diskette kopieren

    cbmcopy 8 datei.prg .
  • Datei auf Diskette schreiben

    cbmcopy datei.prg 8

Tipps & Tricks

  • Sicherungsstrategie: Wenn du mehrere Disketten sicherst, nutze eine klare Namensstruktur wie spielname_original.d64.

  • Reinigung: Vor dem Einlesen das Laufwerk und die Disketten vorsichtig reinigen – spart Ärger bei Lesefehlern.

  • Fehlerhafte Disketten: Manchmal hilft mehrmaliges Auslesen, um defekte Sektoren zu rekonstruieren.


Fazit

Mit dem XUM1541 und OpenCBM kannst du deine alten Commodore-Disketten nicht nur retten, sondern auch komfortabel auf moderner Hardware weiterverwenden.
Die Einrichtung ist mit ein wenig Geduld machbar, und der Lohn ist ein Stück digitaler Geschichte, das nicht verloren geht.

Nostalgie kann man nicht kaufen – aber man kann sie sichern.

1. Wenn GUI-Änderungen nerven

Viele langjährige Thunderbird-Nutzer kennen das Problem:
Mit fast jedem größeren Update verändert sich das Aussehen der Benutzeroberfläche.
Menüs wandern, Buttons sehen anders aus, Abstände wirken ungewohnt – und der geliebte „Classic Look“ scheint mit jeder Version weiter zu verschwinden.

Wer sich nicht jedes Mal an ein neues Layout gewöhnen möchte, kann auf eine wenig bekannte, aber sehr mächtige Möglichkeit zurückgreifen: CSS-Anpassungen direkt in Thunderbird.


2. Thunderbird lässt sich optisch anpassen

Thunderbird basiert – wie Firefox – auf der Gecko-Engine.
Die gesamte Oberfläche wird intern mit XUL (XML User Interface Language) aufgebaut, und deren Darstellung wird durch CSS gesteuert.
Das heißt: Mit eigenen CSS-Dateien kann man fast jedes Element umgestalten, verschieben oder ganz ausblenden.


3. Was steuert CSS in Thunderbird?

CSS (Cascading Style Sheets) ist in Webseiten der Standard für Layout und Design.
In Thunderbird gilt das Gleiche – nur beziehen sich die CSS-Regeln nicht auf HTML-Elemente, sondern auf die XUL-Elemente der Oberfläche.
Man kann damit u.a.:

  • Buttons ausblenden oder umplatzieren

  • Menüs verschieben

  • Abstände anpassen

  • Farben, Rahmen und Hintergründe verändern


4. Auf Elemente zugreifen und sie verändern

Um gezielt Änderungen vorzunehmen, muss man die IDs oder Klassen der Oberfläche kennen.
Diese lassen sich mit den Entwicklerwerkzeugen von Thunderbird herausfinden (ähnlich wie im Browser-Inspektor).

Vorgehensweise:

  1. CSS-Ordner anlegen
    Im Thunderbird-Profilordner den Unterordner chrome erstellen (falls nicht vorhanden).

  2. Datei userChrome.css erstellen
    In diesen Ordner die Datei userChrome.css legen, in der alle Anpassungen stehen.

  3. CSS-Anpassungen aktivieren
    In den Thunderbird-Einstellungen unter Allgemein → Konfiguration bearbeiten den Wert toolkit.legacyUserProfileCustomizations.stylesheets auf true setzen.

  4. Thunderbird neu starten
    Änderungen werden erst nach einem Neustart sichtbar.


5. Beispiel: Classic Look wiederherstellen

Das folgende CSS passt Thunderbird optisch an den klassischen Stil an.
Es blendet unnötige Elemente aus, verschiebt Menüs und Toolbars und sorgt für eine aufgeräumte Oberfläche.

Speichere den Code als userChrome.css im Profilordner unter chrome:

/* 1. "Bereiche"-Button ausblenden */
#spacesPinnedButton {
display: none !important;
}

#unifiedToolbarContent {
padding-inline-start: 0 !important;
margin-inline-start: 0 !important;
}

/* 2. Menüleiste ganz nach oben verschieben */
#toolbar-menubar {
order: -1 !important;
-moz-box-ordinal-group: 0 !important;
}

/* 3. Schnellfilter-Box nach rechts verschieben */
#quick-filter-bar > * {
order: 0;
}

#qfb-qs-textbox {
order: 99 !important; /* ganz nach rechts */
margin-left: auto !important; /* Abstand zu den Buttons */
}

/* 4. Sichtbare Trennlinie unabhängig von Auswahlhintergrund */
#threadTree {
border-bottom: 4px solid color-mix(in srgb, currentColor 25%, transparent) !important;
}

#messagePaneSplitter {
background: none !important;
min-height: 0 !important;
}

/* 5. ThreadPaneHeaderBar komplett ausblenden */
#threadPaneHeaderBar {
display: none !important;
}

/* 6. Quick Filter Buttons ausblenden */
#qfb-tags,
#qfb-inaddrbook,
#qfb-starred,
#qfb-sticky {
display: none !important;
}

/* 7. Toolbar-Buttons in den Tab verschieben */
toolbar {
order: -1;
}

6. Fazit

Mit ein paar gezielten CSS-Zeilen lässt sich Thunderbird optisch deutlich entschlacken und dem vertrauten „Classic Look“ annähern.
Der große Vorteil: Man behält volle Kontrolle über die Oberfläche – selbst wenn Mozilla im nächsten Update wieder am Design schraubt.

Wer einmal damit angefangen hat, merkt schnell: Thunderbird-CSS ist der Schlüssel zu einer Oberfläche, die genau so aussieht, wie man sie will.

Was tun, wenn man nicht nur das SunnyPortal zum Abruf der Daten nutzen will sondern seine Daten lokal verarbeiten möchte? Leider bietet der SMA TriPower (meines Wissens) keine REST API Schnittstelle, um einfach Daten zu ziehen. Allerdings gibt es einen Modbus Server, den man aktivieren kann!

Dazu ist folgendes zu tun:
– Lokaler Login im Wechselrichter als Installateur
-> Device configuration -> Type of communication -> Reiter Modbus aktivieren, Default Proto lassen -> Save

Wichtig: Geräte ID notieren (default bei mir war „3“)

Abruf der Daten via Modbus mache ich via Linux CLI auf einem Raspberry Pi Zero W, das Tool der Wahl ist hier modbus-cli.

Beispiel zum Datenabruf (hier: Ladezustand der Batterie)

Benötigt werden die passenden Modbus Register für den Wechselrichter. SMA stellt diese zum Download bereit:

https://files.sma.de/downloads/PARAMETER-HTML_STPxx-3SE-40_30109R_V11.zip

Diese Datei ist für die Firmware 3.01.09R, insofern können sich für spätere Firmwareversionen andere Register ergeben, ein neueres Dokument habe ich aber nicht gefunden.
Nun zum Beispiel, wir nehmen meine Geräte ID 3, Register 30845 (Bat.ChaStt), U32 (unsigned u_int32), 2 Register (2byte)

Befehl:

modbus -s 3 <ip adresse> H@30845/I

Ausgabe:

Parsed 0 registers definitions from 1 files
30845: 100 0x64

100 heisst: 100% Ladezustand

Erklärung:

-s 3 <- Geräte ID

H <- 16bit/1byte unsigned int pro register

30845 <- Batterie Ladezustand Register

I <- 32bit/2byte unsingned int lesen, also 2byte

 

Once in a while you have to set a host into maintenance mode. This can be quite annoying, having to click yourself through all the screens in the Zabbix frontend. Many Zabbix admins use a so called „maintenance group“ to make it a little less annoying:
These are groups with a perpetual maintenance time, like 10+ years or so. Simply move one or more hosts into the maintenance group and it is in maintenance mode until it is moved out of this group again.

I created a set of scripts for Linux and Windows Powershell, to do this from the console/commandline.
Usage is easy peasy, as long as you did not override the detected hostname of the system, but if you did this, you will surely figure out how to apply this to the script.

You need to have a valid API user in Zabbix with access to the required API endpoints of course.
This script also uses http basic auth to login to the Zabbix server. So if you have set another auth method, adjust the script accordingly.
To configure this script, edit these to fit your needs:


API_URL=“https://URL/api_jsonrpc.php“
USER=“some_api_user_http_auth_username“
PASSWORD=“some_api_user_http_auth_pass“
HOSTGROUP=“name_of_maint_group“

Usage Linux:
Add host to maintenance group: /path/to/zbx_maint.sh ADD
Remove host from maintenance group: /path/to/zbx_maint.sh REMOVE

Usage Windows:
Add host to maintenance group: powershell.exe -File „C:\path\to\zbx_maint.ps1“ -Action ADD
Remove host from maintenance group: powershell.exe -File „C:\path\to\zbx_maint.ps1“ -Action REMOVE

Attention: These scripts use the „old“ authentication method, that is declared deprecated in Zabbix 7.0 LTS. However the „new“ auth method is broken in Zabbix since several versions ago:
[ZBX-22952] API authentication using Authorization bearer header does not work – ZABBIX SUPPORT

Download the scripts: zbx_maint.zip

From the start of playing Eve Online this „Autopilot“ problem was getting on my nerves. If you have large distances to travel and activate the autopilot, it does not warp you to zero (0) of the jumpgate, but you end up 2.000m, 3.000m or even 5.000m away from it. So in a slow ship you have massive travel time to calculate in. Of course you could sit there and click the Afterburner icon etc, but where is the sense in flying Autopilot then?

The solution to this actually quite simple. Get an autoclicker tool. As I am using Linux, this tool is XClicker. Easy to use, available in several packages (Appimage, deb, etc) and very easy to configure. Just install, set the coordinates for the „Jump“ button and hit F8. Tadaaaa!

This will also „dock“ you at your station,as the „Dock“ button is at the same position.

Some of us are still using the really old FritzCard PCI under recent Ubuntu Linux.
As the fcpci module is not being developed anymore (it seems), the last available version is for Linux kernel 4.4.0 and can be found here:

https://belug.de/~lutz/pub/fcpci/fritz-fcpci-4.4.0.tar.bz2
(local mirror: fritz-fcpci-4.4.0)

However, this won’t compile under the standard Linux kernel that is shipped with latest Ubuntu 18.04.5 LTS, which is 4.15.0-122. It will fail with an error like this:

In file included from /usr/local/src/fcpci-4.4.0/src/main.c:24:0:
./arch/x86/include/asm/uaccess.h:30:27: error: unknown type name ‘mm_segment_t’; did you mean ‘apm_event_t’?
static inline void set_fs(mm_segment_t fs)
^~~~~~~~~~~~
apm_event_t

But relax, the task can be achieved by editing the sources a little. Here is how.

Steps:

  1. Download the sources from above and extract to /usr/local/src or somewhere else
  2. Make sure you got the build-essental package installed:
    sudo apt-get install build-essential
  3. Edit the file main.c and go to line 24.
    Replace #include <asm/uaccess.h>
    with #include <linux/uaccess.h>
  4. Now build the module with „make“ and install with „sudo make install“
  5. Check with „modinfo fcpci“ if the module has been installed correctly. It should show something like this:filename: /lib/modules/4.15.0-122-generic/kernel/extras/fcpci.ko
    description: CAPI4Linux: Driver for AVM FRITZ!Card PCI
    license: Proprietary
    srcversion: 9274AE9170599A8E7BC82F1
    alias: pci:v00001244d00000E00sv*sd*bc*sc*i*
    alias: pci:v00001244d00000A00sv*sd*bc*sc*i*
    depends: kernelcapi
    retpoline: Y
    name: fcpci
    vermagic: 4.15.0-122-generic SMP mod_unload
  6. To use the module and capi20, add those modules to /etc/modules:
    echo -e „fcpci\ncapidrv“ >> /etc/modules
  7. Reboot and check if the modules are loaded with „lsmod|grep capi“, it should show:capidrv 36864 0
    isdn 147456 1 capidrv
    kernelcapi 40960 2 capidrv,fcpci
  8. Thats it. „capiinfo“ should now also find your controller and show it. Extract:capi20.c: 164 CapiDebug():[capi20_isinstalled]: standard loop – module: standard
    capi20.c: 164 CapiDebug():[capi20_isinstalled]: capi_fd: 4
    Number of Controllers : 1
    Controller 1:
    Manufacturer: AVM GmbH
    CAPI Version: 2.0
    Manufacturer Version: 3.11-07 (49.23)
    Serial Number: 1000001
    BChannels: 2
    Global Options: 0x00000039
    internal controller supported
    DTMF supported
    Supplementary Services supported
    channel allocation supported (leased lines)
    B1 protocols support: 0x4000011f capi20.c: 164 CapiDebug():[capi20_isinstalled]: standard loop – module: standard
    capi20.c: 164 CapiDebug():[capi20_isinstalled]: capi_fd: 4
    Number of Controllers : 1
    Controller 1:
    Manufacturer: AVM GmbH
    CAPI Version: 2.0
    Manufacturer Version: 3.11-07 (49.23)
    Serial Number: 1000001
    BChannels: 2
    Global Options: 0x00000039
    internal controller supported
    DTMF supported
    Supplementary Services supported
    channel allocation supported (leased lines)
    B1 protocols support: 0x4000011f

This works up to 4.17.19  kernels as well, but to my knowledge not in any kernel later than 4.17.19, as to my understanding proc file operations (proc_fops) have changed.

Everybody knows, the range of bluetooth modules varies. Original HM-10 modules for example, have quite a nice range. However, there are a LOT of clones floating around. Transmission ranges of many clones are extremely bad. So, how can you make them better?

Replace the onboard PCB antenna with a wire antenna!

The length of the wire should be 3.125cm, which is a lambda/4.
After you finish add a drop of hot glue to the solderspot, SMD pads are very sensitve and fragile, without fixating the joint, the antenna could lever the pad of the PCB and break it. So add hot glue or some other lacquer.

PCB antenna of a HM10 clone

Bild 1 von 6

TL;DR: Upgrading Kernel to 4.16.1 and changing settings in the BIOS fixed it for me.

Recently I upgraded my Workstation from an old Athlon 5370 on MSI AM1I to a Ryzen 5 2400G on a Gigabyte AB350M-DS3H.
Sadly I had no idea of the trouble I was getting into with Linux. My Ubuntu 16.04.3 was running the stock 4.4.0 Kernel, for some strange reason the kernel would not boot completely once in a while. It was stuck during kernel load without any message whatsoever. Pressing reset and giving it another try worked most of the time. Rarely I had to switch everything off and try again.

Using 4.4.0 everything seemed to be running stable, but alas, no APU hardware acceleration! Compiz sucked a lot of CPU power and Youtube videos even more. Lucky enough, 4.16 was being released soon after I bought the new hardware. Strangely I encountered the same kernel boot lockups almost every time I booted. But what was even worse was the constant freeze/lockup after the system booted. Using the desktop worked for some time, but as soon as APU power was required (Youtube, gaming, …) the system just locked up with no kernel message whatsoever being locked. Hard to debug! So first I was suspicious about a hardware defect. Reboot and into Memtest86+. Running for hours my 16GB DDR4 @ 3200MHz with no errors logged. Guess that was not it. Then I installed Windows 10 with newest chipset and graphic drivers on a spare SSD and started playing some games. Aha! Once in a while a game dropped back to the desktop. Something MUST be wrong. I turned down the memory frequency to around 3000MHz and the problems stopped. Could play for hours. So hardware should be fine. Back to linux.
Again, lockups after the the first few minutes. Google spat alot of hints on older (the first without APU) Ryzens out, disable C6 state, rebuild Kernel with „Offload RCU callback processing from boot-selected CPUs“ and set cores as kernel switch, integrate bleeding edge PPA with the hottest, newest, whatever LLVM/Mesa/whatever  packages. Nothing worked. Still lockups.
So I started to think about the mainboard. Locked into dmesg and opened tickets with Gigabyte Support to have them fix the ACPI and IOMMU errors I encountered during bootup:

[ 0.000000] ACPI BIOS Error (bug): Failure creating [\_SB.SMIC], AE_ALREADY_EXISTS (20180105/dswload-380)
[ 0.000000] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20180105/psobject-252)
[ 0.000000] ACPI Error: AE_ALREADY_EXISTS, (SSDT: AMD PT) while loading table (20180105/tbxfload-228)
[ 0.000000] ACPI Error: 1 table load failures, 7 successful (20180105/tbxfload-246)
[ 0.061188] ACPI BIOS Error (bug): Failure looking up [\PTOS], AE_NOT_FOUND (20180105/psargs-364)
[ 0.061188] No Local Variables are initialized for Method [„\“ ]
[ 0.061188] No Arguments are initialized for method [„\“ ]
[ 0.061188] ACPI Error: Method parse/execution failed \, AE_NOT_FOUND (20180105/psparse-550)

The answer was a quick and short „in Windows 7/10 this error does not show up. Linux is not supported.“, which I interpreted as „GO FUCK YOURSELF, ASSHOLE! HAHAHAHAHA!“
Curse you, Gigabyte! Last product I ever buy from you. Blacklisted for life!
My assumption was, that something was messed up in the BIOS, out of standards or whatever. So I disabled everything suspicious. Global C-State, IOMMU, dynamic overclocking, etc. Then I added iommu=soft to the kernel boot parameters.

For the time being the time being the freezes disappeared and everything works. Give it a try, maybe you suffer from crappy Gigabyte products as well!

Edit:
Contrairy to the first picture above, enabling SVM mode on the Gigabyte still produces some lockups. So disable it.
Additionally, use the recent 4.16.1 Kernel (install with ukuu or manually). The 4.16.2 in the repos produces freezes again (for me).
With this setup the only „nasty“ thing that remains is the frequent  boot-up lock. If the system is up, it seems to be working.

Edit 27.04.18:
With recent 4.17 RC2 things improved further. So far only one or two lockups during first kernel load.

Für eine Richtfunkverbindung nutze ich seit Jahren zwei Mikrotik RB500_r5 Routerboards. Eines davon zickt seit einiger Zeit schwer rum. Mal bleibt es einfach „stehen“ und ist nicht mehr erreichbar, mal habe ich unerklärliche Reboots in den Logfiles.
Das alte Stecker raus – Stecke rein Spiel hat zu Beginn des Phänomens funktioniert, aber über die Monate hat auch das nichts mehr gebracht. Die serielle Konsole zeigt dann zwar an, dass das RB booten will, aber nichts tut sich. Die LEDs der Netzwerkkarte flackern sehr schnell und sehr schwach.
Das 12V Netzteil mal testweise gegen eine 15V Version getauscht…. Funktionierte lange Zeit, dann ging es wieder los. Nachtigall ick hör dir trapsen!

Also flugs demontiert und das Gehäuse geöffnet. Treffer! Drei 560µF/6.3V Elkos haben sich von ihrem Elektrolyt getrennt, nichts hält ewig.
Da ich keine 560µF Elkos da habe, habe ich einfach 470µF verwendet, die Bauform passt auch nur ungefähr 😀 Aber mit ein bisschen gutem Willen kann man es schon schaffen.

Hier mal ein Foto von zweien der Übeltäter.

Nach 15min waren die Elkos getauscht und das RB verrichtet wieder brav seinen dienst.

Ich habe es jüngst schon in einer Amazon Rezension geschrieben, nun noch mal hier im Blog (für die Suchmaschinen *g*).
Es gibt diese supergünstigen Dimmer, die als LED Dimmer beworben und verkauft werden. Was kann man für 2 EUR schon groß falsch machen?
Eigentlich nichts, aber die Dinger sind simpelst aufgebaut (NE555 Timer, OpAmp, 78L05 und ein kleiner N-Kanal MosFET) und erzeugen Störungen entweder auf der Eingangs oder Ausgangsseite.

Aus meiner Rezension:

—-

Hierbei handelt es sich um einen LED Dimmer allereinfachster Bauart.
Über einen 555 Timer IC wird ein Rechtecksignal erzeugt, dass sich über eine Poti Einstellung (bei mir ein Linearpoti 830k) ändern lässt.
Das Poti ändert die Geschwindigkeit mit der sich ein Kondensator lädt/entlädt und somit was am Timer IC als Input anliegt.
Der Ausgang des Timer ICs schaltet ein N-Kanal MosFET und somit die Last auf Masseseite! RIchtig, hier wird Masse/GND geschaltet und NICHT Vcc für die Last. Daher ist V+ hier auf Eingang/Ausgang verbunden.
Wieso haben nun manche Kunden ein Pfeifen vernommen? Das Verhältnis von Widerstand zu Kondensator bestimmt logischerweise die Arbeitsfrequenz des Timer ICs. Ist diese ungünstig gewählt (Näherungsweise mit f = 1,44 / (R * C) zu ermitteln) und liegt sie im hörbaren Bereich, dann pfeift es eben.
Ich zum Beispiel höre ein Pfeifen auf der EINGANGSseite, ja, richtig gelesen. Ich habe vor dem Dimmer noch Geräte auf 12V die plötzlich angefangen haben zu pfeifen. Ein kurzer Blick mit dem Oszi zeigt mir auch, dass die Dimmer meine 12V Leitung nachhaltig versauen.
Am Eingang kann man die Störungen mit einem grokalibrigen (2200µF, 25V) Elko filtern. Dann ist Ruhe!

Obacht: Ein Elko am Ausgang sollte das LED pfeifen auch beheben, es ist aber möglich, dass dies Farbe/Helligkeit beeinflusst.

—-

Ich habe heute am Eingang einen 2200µF Elko verbaut und seit dem ist das Pfeifen weg und der Oszi sieht auch keine größeren Störungen mehr.