Wild Wood | Commodore 64 Game
How to fix the Teamspeak Audio mute problem on Linux
In this article, I’m gonna show you how to fix tix the TeamSpeak Audio mute problem on Linux. It has been tested on my machine, you can see details below.
| Part | Model |
|---|---|
| Operating System | OpenSUSE Tumbleweed |
| Desktop Environment | KDE Plasma 5.20.4 |
| Host | X470 AORUS ULTRA GAMING |
| Kernel | 5.10.1-1-default |
| Window Manager | KWin |
| CPU | AMD Ryzen 5 2600 (12) @ 3.400GHz |
| GPU | NVIDIA GeForce GTX 1060 6GB |
| PulseAudio Version | 14.0-rebootstrapped |
The problem
When using TeamSpeak on Linux, you may have experienced this issue: Starting TeamSpeak mutes certain applications, such as Spotify or VLC. This is pretty annoying, especially while gaming, since you constantly have to tab out of your game, open the volume control applet and unmute the application, only to see it getting muted later. This is not a solution, so let’s fix it.
The fix
Fixing this is pretty straight forward (See the OpenSUSE Wiki). All you have to do is commenting out the line load-module module-role-cork in /etc/pulse/default.pa. If you know what you’re doing, cou can do this yourself, but I’ll give step-by-step instructions below.
Using KDE Kate
- Hit [Alt] + [Space].
- Enter
kdesu kate /etc/pulse/default.paand hit [Enter]. - Search for the line saying “load-module module-role-cork” (Hint: Use [Ctrl] + [F])
- Put a
#in front of it. It should look now look like the following:### Cork music/video streams when a phone stream is active # load-module module-role-cork - Save the file ([Ctrl] + [S]) and close the window.
- Open krunner by pressing [Alt] + [Space] and type
pulseaudio -k && pulseaudio --start[Enter].
Using GNOME gedit:
- Open a terminal window.
- Start a root session. On Ubuntu/Debian based systems, I recommend using
sudo bash, on SUSE/RHEL based systems usesu -. Enter the required password, if you are prompted to. - Edit the file
/etc/pulse/default.pa. For doing so, type:gedit /etc/pulse/default.pa - Search for the line saying “load-module module-role-cork”
- Put a
#in front of it. It should look now look like the following:### Cork music/video streams when a phone stream is active # load-module module-role-cork - Save the file ([Ctrl] + [S]) and close the window.
- Exit the root session by typing
exit. - Kill the PulseAudio Server:
pulseaudio -k - Start it again:
pulseaudio --start
Using the terminal (universal method)
- Open a terminal window. On KDE Plasma, this is done by opening the Kickstarter Menu and searching for “Konsole”.
- Start a root session. On Ubuntu/Debian based systems, I recommend using
sudo -s, on SUSE/RHEL based systems usesu -. Enter the required password, if you are prompted to. - Edit the file
/etc/pulse/default.pa. For doing so, type:vim /etc/pulse/default.pa - Search for the line saying “load-module module-role-cork”. For doing so, enter a
/and the line afterwards, so/load-module module-role-cork. See this wiki entry for more help regarding searching in VIM. - Enter editing mode by hitting the key
ion the keyboard. Now you will be able to edit the text file. - Now out comment the line by putting a
#in front of it. It should now look like the following:### Cork music/video streams when a phone stream is active # load-module module-role-cork - Now hit escape in order to exit editing mode and type
:wqand hit Enter. This will save the file and exit vim. - End the root session by using
exit. - Kill the PulseAudio Server:
pulseaudio -k - Start it again:
pulseaudio --start
Sources
Further Reading
GRUB, u-boot, kernels and DTB loading (on the BPi M2 Zero and others)
While I was experimenting with the BananaPi M2 Zero board, I soon needed to adopt its device tree file (dtb).
Fortunately, the friendly members of the openSUSE:Factory:ARM community quickly hinted me at the grub2 "devicetree" command which can be specified similar to "linux" or "initrd" to name a file that's loaded as device tree.
Unfortunately, there is no way to make this really persistent, short of editing the grub generator scripts which will get lost on every grub2 update.
The other option would be to decompile the board's DTB file ("/boot/dtb/sun8i-h2-plus-bananapi-m2-zero.dtb" in my case), change and then recompile it, replacing the original file. This has two downsides: first, it will get overwritten with every update of the "dtb-sun8i" package (no idea how often this will be the case) and second, you might want to have the original file as fallback ready. In general, editing package managed files is not a good idea in my book, if it can be avoided it should be.
So I looked into the "who loads which device tree file" and found out that actually the dtb is loaded by u-boot, even before grub starts. U-boot has the name of the board built-in and thus the file name it is looking for. Additionally it has a search list of directories that it searches to find the dtb file. So the simplest way to apply your own dtb file would probably be to put it, with the original file name into the search path after the original file. I tried this approach at first, but then went for explicitly specifying a different filename, which is just not as subtle in case you need to debug this years later ;-)
So the method is relatively easy:
- put your modified dtb file into /boot, I named it custom.dtb.
- boot into u-boot, interrupt booting on the serial console
- in u-boot console, enter setenv fdtfile custom.dtb
- in u-boot console, enter saveenv
openSUSE Stickers to Enhance your Tech
openSUSE Tumbleweed on the Banana Pi BPI-M2 ZERO
This is the first post of a small series about openSUSE on the Banana Pi BPI-M2 ZERO.
Preface
I recently got myself a Banana Pi M2 Zero board while ordering other stuff at an electronics distributor. The M2 zero is the same form factor and feature set as the Raspberry Pi Zero W (the GPIO pin headers are said to be compatible, it has WiFi and Bluetooth built in and an USB OTG port). The CPU is an Allwinner H2+, a quad-core ARM processor running a 1GHz clock speed, RAM size is 512MB. Processing power is probably comparable to a Raspberry Pi 2 board.
I bought the M2 Zero to use it with an RTLSDR stick to receive the signal of my outside RF temperature sensor. This worked with the Raspberry Pi Zero W, but was a bit too much for the slower CPU which has other more important things to do anyway (playing internet radio ;-), so the M2 Zero was a cheap, more powerful alternative. The box will be running headless and thus I do not care about support for graphics and multimedia anyway.
In the end, I switched the RF receiver to a RaspyRFM board whih is using less energy and simpler to use than an RTLSDR stick just to receive some sensors and now the M2 Zero board is free for tinkering...
openSUSE on the M2 Zero
There was already an image available for the Banana Pi M2 Plus (called "sinovoipbpim2plus"), which is the "bigger brother" of the M2 zero, but that image did not boot. Experimenting with the u-boot image from armbian lead to success in "openSUSE Tumbleweed boots with armbian u-boot". Thanks to the friendly openSUSE ARM community, a matching u-boot version for the M2 Zero was built quickly and I could submit the updated image in OBS to get an image ready for the board (called "sinovoipbpim2zero").
Some small things are still to be sorted out, this is why I would suggest you use the image from the home:seife:bananapi repository for now. Since the board has only WiFi networking (more on that in a later post...), you'll need a serial console wired up for initial setup and I strongly suggest to use at least the "openSUSE-Tumbleweed-ARM-X11-..." image and not the JeOS image, since JeOS does not contain NetworkManager and using WiFi with wicked (actually using anything with wicked) is not fun.
So put the image on the SD card, connect the serial console, boot the box up. Log in as root. WiFi connection is easily established then:
nmcli dev wifi connect YOUR_SSID password YOUR_PASSWORD
That's it, have fun! ;-)
Addon note: When I started to write this post, my home:seife:bananapi repo was necessary for actually getting WiFi to work (contained a fixed kernel-firmware package). This has all been submitted to upstream or openSUSE:Factory:ARM now. All that's "special" in my repo now is a slightly extended package selection in the image (the "dtc" package is included) and a fixed config.sh script that makes NetworkManager actually work correctly, including name resolution, see boo#1180234 for details), so the image from openSUSE:Factory:ARM should be "good enough" for most uses already and in the near future I'll probably retire the home:seife:bananapi project or use it just for development stuff).
Dell Latitude D630 Retirement
openSUSE Tumbleweed – Review of the week 2020/53
Dear Tumbleweed users and hackers,
The last week of 2020 has come to an end. Tumbleweed had been rolling steadily throughout the entire year and did went for the big finale of the year with a whopping 7 snapshots (1224, 1225, 1226, 1227, 1228, 1229 and 1231).
The main changes included there contained:
- Mozilla Firefox 84.0
- gtk+ 2.24.33: the final release of the gtk 2 series
- Linux kernel 5.10.3
- Ruby 3.0: rubygems have been enabled, default ruby version is still 2.7
As a lot of maintainers are busy with celebrations, the list of staging projects did not change drastically. As such, we still have these things in the works for 2021:
- Linux kernel 5.10.4
- icu 68.1: breaks a few things like postgresql. Staging:I
- Multiple python 3 versions parallel installable. Adding to python 3.8, version 3.6 week be reintroduced. Python modules will be built for both versions.
- RPM 4.16: all build issues in Staging:A have been fixed, but on upgrades, rpm seems to segfault in some cases.
- brp-check-suse: a bug fix in how it detected dangling symlinks (it detected them, but did not fail as it was supposed to)
- permissions package: prepares for easier listing, while supporting a full /usr merge
- Rpmlint 2.0: experiments ongoing in Staging:M
- openssl 3: not much progress, Staging:O still showing a lot of errors.
Looking back at 2020
2020 has been a tough year. The global pandemic made it possible to work very much on my personal projects, so let’s talk about that. Also some “Thank Yous” will be given.
Celebrating Nemesis Anniversary
At January 2nd, 2020, we introduced Nemesis. Nemesis is my very own Telegram group management bot, written in Python. Back then, the very popular bot BanhammerMarie went offline in favour of a closed source, proprietary alternative I did not want to use. I first wanted to clone Marie in Java, but scraped that idea soon. So I forked Marie, and over the time, some new features were introduced.
Features arrived in 2020
Patches to version 1.x
Multi Language support

Our first real change was support for multiple languages. In theory, it is now possible to use different languages in chats using /lang, but we do not have the translations yet. Any help is appreciated, so I you want, go ahead and check out our translation portal.
Import and Export

We also added support for importing settings from the proprietary bot @MissRose_bot we wanted to replace in our groups. This should make it much easier for newcomers to migrate their chats over to Nemesis. In addition, it is now possible to export some of Nemesis settings to a nice and readable .toml file.
Version 2.0

Later the year, the first major update of Nemesis, version 2.0, was released. This version brought a lot of new features and improvements, so let’s take a look.
Migration to python-telegram-bot 12.x and 13.x
Nemesis now completely uses version 12.x of the python-telegram-bot api. Originally written for version 11.x, this transition took a lot of time, but it allows us to keep the bot running, as using an old version of the api would make it more difficult to add new features later. Some time after, we also took the transition to 13.x, which was a lot smoother then migrating to its predecessor.
Downloading stickers and creating custom packs

Another new feature is the ability to download Stickers as .png files and to create your own sticker packs! Did not try it out yet? Go ahead and send /help to the bot and let it show you how to do so! It only works with static, not animated, stickers at the moment though.
Reputation system

Also, it is now possible to vote on messages by replying to them with + or -. You can enable this feature by typing /reputation on.
Secret messages

The last feature I want to mention is the possibility to send secret messages in groups, called “whispers”. In order to enable this, it was necessary to use InlineQuerys, which actually was a pretty painful process. BUt it works now, and Nemesis replaces another bot in our groups, @whisperBot, enabling me greater privacy, since I do not need to trust a third party in order to send secret messages.
Features to come in 2021
I’ve got some ideas for new features, so here they are. Any feedback is appreciated.
REST based API

This one is not particularly useful for the user, but enables us to build great tools based on Nemesis. Building a REST Api allows us to build applications integrated into Nemesis, such as a fully functional web based administration panel.
Leveling system
Another feature to come is leveling, similar to Combot. This way it will finally be possible to manage a group with only Nemesis, without needing another bot.
Statistics
Same as above, it will be possible to get rid of Combot and do all of the management with Nemesis. Statistics will be generated based on the time of day, the sender and the message type. The message itself won’t be saved in any way, keeping your messages private. Statistics will be disabled by default.
Performance Improvements
Currently, Nemesis is not really scalable and won’t work well if the number of users grows. In order to change that, it will be necessary to change the way the bot handels database queries and processes data, as well as optimizing it to use multiple threads and cache data in memory.
GUtilities Reloaded
In 2019, we were working on creating Minecraft plugins for a multiplayer network we wanted to call “GamelMC”. This project was later scrapped, and all the code written was archived. However, in 2020, I used some of the old code and ported one plugin to Minecraft 1.16.4. The plugin adds basic functionality to the server, such as chat formatting, chat clearing, fancy kick messages, teamchat and a lot more. The source code is available here.
Kenaten
Back in late 2019, I discovered a mobile game which some of my friends played as well. Together with @ttzug I worked on creating a bot for that game, but this project was scrapped. The project was to bulky, and the game turned out not being really good. In addition, personal reasons made me quitting that game.
Contribution to other Open Source projects
Corona Warn Companion
This is an app which helps you better understand the warnings the official Corona-Warn-App in Germany. Let me quote from it’s README:
!!! quote The app reads the Rolling Proximity IDs recorded by your device from the Exposure Notifications database (this is only possible with root permissions, which is why official Exposure Notifications apps, such as Corona-Warn-App, cannot display these details). The app downloads the Diagnosis Keys from the official German Corona-Warn-Server and other countries’ servers, as selected by you. For Germany, it downloads the keys published daily for the last few days, and the keys published every hour for today. Only keys for the days found in step 1 are shown and counted.
However, the application was not able to read data from the FOSS version of the Corona Warn App, so I added that. Anyway, the companion app is really cool, so if your device is rooted, you should definitely check it out! Here is the link.
YaST
YaST is the installation and configuration tool for openSUSE and the SUSE Linux Enterprise distributions. It features an easy-to-use interface and powerful configuration capabilities. I just did some small bugfixes, and am pretty proud on my first contribution to a FOSS project.
Thank you!
Now its time to thank some people. First of all, huge thank you to the amazing people who keep Nemesis running. Namely:
| Name | Role |
|---|---|
| @GenosseSeverus | Co-Owner of Nemesis |
| @Luna_Loony | Administrator |
| @ttzug | Support User |
Speaking of GenosseSeverus, make sure to check out their Telegram Themes: Sharry Themes
Another thank you goes to Paul Larsen for building the amazing base of Nemesis.
Happy new year!
Androids Datenschutzeinstellungen optimieren und Android absichern
Android telefoniert in seinen Voreinstellungen doch recht viel nach Hause zu Google, dem Gerätehersteller und anderen Parteien. In diesem Artikel ist beschrieben, wie man diese “Phone-Home Funktionen” einschränken kann. Wie viel Google so überuns erfährt, zeigt dieses Zitat von Aufsichtsratchef Eric Schmidt:
With your permission you give us more information about you, about your friends, and we can improve the quality of our searches. We don’t need you to type at all. We know where you are. We know where you’ve been. We can more or less know what you’re thinking about.
Es ist also an der Zeit, diesem Datensammeln den Stecker zu ziehen.
Der sanfte Weg
Beim “sanften Weg” werden keine Modifikationen am System vorgenommen. Alle Änderungen betreffen nur den jeweils angemeldeten Benutzer und lassen sich leicht wieder ändern. Allerdings gibt es bei dieser Methode immernoch Schlupflöcher, durch die das Gerät Daten abfließen lassen könnte.
Google Einstellungen anpassen
Für die folgenden Einstellungen müssen Sie in die Einstellungen ihres Google Kontos navigieren. Gehen Sie hierzu unter Android 10 wie folgt vor:
- Öffnen Sie ihre Geräte Einstellungen
- Wählen Sie den Menüpunkt “Google” aus.
- Wählen Sie dann “Google-Konto verwalten” aus.
- Tippen Sie unter “Datenschutz & Personalisierung” auf “Daten & Personalisierung verwalten”.
Aktivitäten abschalten
Nun können Sie die eigentlichen Einstellungen ändern:
- Deaktivieren Sie die “Web- & App- Aktivitäten”, den “Standortverlauf” und den “YouTube-Verlauf”.
- Deaktivieren Sie nun personenbezogene Werbung. Öffnen Sie dazu http://google.com/ads/preferences.
- Entfernen Sie unter “Interessen” alle Häckchen
- Scrollen Sie zu “Interessenbezogene Werbung” und deaktivieren Sie den Schalter.
Ortungsfunktion deaktivieren
Nun sollte noch die Ortungsfunktion deaktiviert werden:
- Kehren Sie zurück zu den Google Einstellungen.
- Wählen Sie den Menüpunkt “Sicherheit”.
- Rufen Sie “Mein Gerät finden” auf.
- Schalten Sie den Schalter aus.
Synchronisierungseinstellungen ändern
Konten Synchronisierung abschalten
Im nächsten Schritt schalten wir die Synchronisierung aus:
- Öffnen Sie die Android Systemeinstellungen.
- Navigieren Sie zu “Konten”.
- Tippen Sie auf den obersten Eintrag.
- Deaktivieren Sie alle nicht benötigten Einträge
- Wiederholen Sie Schritt 3 & 4, bis Sie alle Konten abgearbeitet haben.
Google Drive Sicherungen abschalten
Nun muss noch die Sicherungsfunktion dran glauben:
- Navigieren Sie aus den Android Einstellungen zu System -> Sicherung
- Deaktivieren Sie “In Google Drive sichern”.
Google Play Protect deaktivieren
Um zu verhindern, dass all unsere Apps zu Google hochgeladen werden, führen wir noch diese Schritte aus:
- Navigieren Sie aus den Android Systemeinstellungen zu “Sicherheit” und tippen Sie auf “Google Play Protect”.
- Deaktivieren Sie sämtliche angezeigten Funktionen.
Nicht benötigte Apps entfernen
Als nächstes sollten Sie alle Apps, die Sie nicht benutzen (wollen), entfernen.
- Navigieren Sie aus den Einstellungen zu “Apps”.
- Klicken Sie auf “Alle Apps anzeigen”.
- Tippen Sie auf die Apps, die Sie nicht benötigen.
- Klicken Sie auf “Deinstallieren” oder auf “Deaktivieren”.
Wir empfehlen, alle Google Apps zu entfernen, mit Ausnahme der “Google Play Dienste” und des “Google Play Store”. Desweiteren stellen viele weitere häufig vorinstallierten Apps ein Risiko da, etwa
- Microsoft Office
- Samsung Health
- Diese Liste könnte endlos weitergeführt werden…
Sicherheitseinstellungen scharfschalten
Eine Displaysperre einrichten
- Navigieren Sie zu “Einstellungen” -> “Sicherheit”.
- Wählen Sie “Displaysperre” aus.
- Schalten Sie eine PIN oder ein Passwort ein
Verschlüsslung aktivieren
- Gehen Sie nun zu “Einstellungen” -> “Sicherheit” -> “Verschlüsslung und Anmeldedaten”.
- Tippen Sie auf “Smartphone verschlüsseln” und folgen Sie den Anweisungen auf dem Bildschirm.
Freie Alternativen für Google Apps
Für die meisten Google Apps gibt es freie Alternativen. Die meisten Apps dieser Art lassen sich aus dem freiem Appstore F-Droid installieren.
F-Droid installieren
- Laden Sie F-Droid von hier herunter.
- Installieren Sie die APK Datei.
- Öffnen Sie F-Droid.
- Aktualisieren Sie die Paketquellen, indem Sie einmal von oben nach unten Wischen.
Empfohlene Apps installieren
Wir empfehlen die folgenden Apps als Alternative zu unfreien Diensten:
- K-9 Mail als Alternative zu GMail
- Telegram als WhatsApp Alternative
- Etar als Kalender App
- Firefox als Alternative zu Google Chrome
- VLC als Mediaplayer
- NewPipe als Alternative zu YouTube
- K-Music beta als Musik App
- OsmAnd als Kartenapp *SimpleSearch als Alternative zu Google.
Der “harte Weg”
Beim harten Weg wird das Betriebssystem des Telefons verändert. Dies sollte nur von erfahrenen Nutzern durchgeführt werden! Wer mehr erfahren will, sollte sich das LineagesOS Wiki ansehen.
Weiterführende Informationen
openSUSE Board Election 2020 results announced
The announcement was made by election official, Ariez Vachha, on the openSUSE Project's mailing list.
The election started on 15 December 2020 and it ended on 30 December 2020. The results were computed today at around 08h00 UTC. All members received the results by email.
Ariez announced the results and provided some statistics.
229 out of 518 eligible voters have cast their vote in this election. In terms of percentage, the turnout is lower than last year's board election.
The complete results are as follows:
- Axel Braun — 142 votes
- Gertjan Lettink — 134 votes
- Neal Gompa — 131 votes
- Maurizio Galli — 103 votes
- Nathan Wolf — 59 votes
The "none of the above" option, which was offered for the first time in a regular board election, obtained five votes.
Therefore, Axel, Gertjan and Neal are elected to serve for a 2-year term on the openSUSE Board.