Element | Matrix Chat Client on openSUSE

All the kids have been talking about the wonders of Matrix as the future of decentralized, secure communication. I have known about it, seen bridges being used in the openSUSE discord and Telegram rooms. Most of my experience has not been great, generally there were significant delays. I have used a few clients, Riot.im on a web client, which I didn’t care for and I also used Quaternion a Qt based client but I have had issues with the encrypted messages bit. I found the user experience to be rather… lack-luster at best. Mostly, I found the whole thing quite confusing. Accessing new rooms wasn’t self-evident, understanding what Matrix is and isn’t was confusing and I therefore found it frustrating to use. My experience, has been that I really preferred Telegram for communication.

A revived curiosity came about when I heard of the splendors of Matrix being espoused by the folks on Destination Linux; Noah and Ryan especially. They really pushed the idea that this is the future of communication. I still mostly dismissed it, thinking that my Telegram experience was satisfactory. Then I heard Noah talk about how Matrix has revolutionized his communication workflow. Matrix has opened up functionality of which specifically, he described how he can text message, as in SMS, on Matrix. Now I was truly intrigued and decided that it was time to look into this once again. I could endure the pain of learning this to eliminate my SMS frustrations.

I know I could use the Element web client for Matrix but I don’t like web clients. If I have to have a browser open to use an application, I do not like the experience, it feels disconnected. Now if you wrap that web app in something like electron and make it feel like a part of the system, that changes things. They feel more complete like a real application and give me what is quite important an icon in my system tray that notifies me of activity. The emphasis here is, I want a system tray indicator of messages or activity. Any communication application that doesn’t give me this is immediately on the chopping block with a need to be replaced. Element meets my criteria and the process began again for using it. I checked the openSUSE Software Repositories and Snap Store, but it wasn’t available. It does, however, exist as a Flatpak (at the time of writing).

Setup Flatpak and Flathub Repository

The first step is to set up Flatpak and the main repository Flathub to get access to the Element-Desktop Flatpak. Generally speaking, Flatpak is set up on most distributions. At least, most distributions don’t make it difficult to get going if not already configured for you.

Though I am gearing this towards using openSUSE, there are instructions for other distributions available. You can go here for the Quick Setup for openSUSE or stay here and I’ll provide the quick, down and dirty ways to get it going. For those that prefer the click around and install, navigate here for the click to direct install method.

https://software.opensuse.org/package/flatpak

or you can use the more fun method and install it in terminal

sudo zypper install flatpak

Next, add the Flathub repository, in terminal, as root run this. If the Flathub repository is already set up on your system, it will not add another (see the --if-not-exist bit on the command).

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Optional Additional step is to install the Discover graphical application explorer backend so you can graphically explore and install Flatpak applications.

sudo zypper install discover-backend-flatpak

Now you are set with installing Element or any other Flatpak for that matter.

Installation of Element

I am presenting three methods of installing Element on openSUSE. Though, the third method my make the previous instruction of setting up the Flathub repo redundant.

Method One – Terminal

The quick and easy way to install Element is from the command line because the command line is awesome.

sudo flatpak install im.riot.Riot

Unfortunately, Flatpak application names are kind of silly in comparison to Snaps but I am sure for good reason. Read through and agree with the changes.

Method Two – Graphical with Discover

The graphical way may indeed be less confusing. Since Discover, the KDE graphical application explorer has been pretty great as of late, I recommend it for exploring Flatpak applications. It is as simple as searching for “Element” and you will get the green and white logo at or near the top of the list, selecting it and install.

The nice thing about Discover is that you can scroll down and see the source of the package. If there was another source for Element available, you can very easily select the source repository. It’s a real nice feature of Discover.

Method Three – From the Flathub website

Finally, You can also use the install file from the Flathub website where you will be provided a *.flatpakref file that some application managers like Discover can unpack and utilize.

https://flathub.org/apps/details/im.riot.Riot

I didn’t actually test it but it should work… maybe… if it doesn’t, be sure to let me know.

With whatever method you choose, it installs and integrates quite nicely into your menu and is immediately executable. There is no funny business to be had, weird hacks or changes that are necessary to run the thing. It is simply, install and go.

First Run and Impressions

When I started up Element, I was greeted with the login screen. It has a clean and modern feel to it that looks like time was taken to give the right visual appearance.

Since I remembered my Username and Password using my brain-backup, Bitwarden. Next you are going to have to authenticate your session. If you have created a passphrase on your other session of Element, this is where you can enter it. If you haven’t done this, you can verify it later. I skipped this step for now so I can show you a really cool way you can verify your session.

After skipping this, you are presented with your Matrix session. Since I have been using it for a little while now, I have a few contacts and rooms to which I am connected. You are also given a notice that you need to verify this session.

Since I had been using Matrix on Quaternion, I didn’t think much of getting it all set up, but I was quite wrong. So it appears that I have not had any messages encrypted using Quaternion, it was all out there in the open. Since I wanted to ensure that my session is verified and has encryption enabled, I had to go through the process.

The method that I think is rather unique and easy to accomplish is to use the interactive emoji verification. Since I started with Element on the mobile client, for reasons, I begin the process on the mobile client to verify my Desktop session. To get there, go into your Settings > Security & Privacy > Show All Sessions. There you will see the sessions logged into Matrix.

Selecting the session titled “Element Desktop (Linux)” with the adjacent red shield icon will reveal some options. You are given two options to verify the “Not Verified” session. Manually Verify by Text and Interactively Verify by Emoji. The mobile will give you a spinning circle and ask you to “Please wait…”

On the Desktop Client you get a focus stealing Incoming Verification Request pop up in the application. Which is what you want to be able to have trusted end-to-end encrypted messages. A new dialog will display informing you of the incoming verification request.

Once the two devices have made their handshake, you are asked to confirm the emojis are in the same order on both sessions. Easy to do, hold the mobile up adjacent the monitor and observe that they match. I just happen to find this method to be clever and amusing.

That is it, you now have your desktop and mobile Element clients. This makes your security all green and your sessions trusted.

It would be advisable to set a passphrase or generate a security key for you encryption key. I did this in the mobile application and copied it to my Bitwarden for safe keeping. You can also use a Security Phrase as well. This will just help you should you log into Matrix from another Element client.

My original intent was to go into how to set up bridges to other services, and the like, but I am already bumping up against my self-imposed word limit. So, I am going to separate out and make a kind of series of blatherings about Matrix chat using Element. This is enough to get you going with your mobile and desktop machines having properly setup and trusted clients. Now, it’s time to do some searching for rooms to have conversations. I’ll figure out how to bridge my other things another time and get back to that place of a centralized communication client I once enjoyed about a decade ago.

What I Like

The Element client makes using Matrix quite enjoyable. Previously, using Matrix was a bit of a lack-luster, almost a science experiment kind of feel to it. Sure, it worked but it didn’t have the polish and great user experience I have using Telegram. I can say, with much confidence, using Element feels like a real product. It feels just as good as any other messaging client. It is still early days for me so it’s still all new and exciting.

I have previously talked about in on of my noodlings how it would be nice to consolidate all these different messaging services like the good ol days of MSN, Yahoo and AIM rather than have all these different chat clients scattered about. I don’t use MSN, Yahoo or AIM anymore but I do have several others. I find the breadth of available bridges rather astounding.

What immediately interests me most is SMS and Facebook messenger. Those are both services I loath using. I would consider using IRC as I can see the utility of being able to stay on top of chats going on there and possibly Discord and Telegram but I don’t think it likely that I will be replacing Telegram or Discord anytime soon. openSUSE does have Matrix bridges into the Telegram groups and Discord rooms so no more work needed there. I will be playing around with these.

Most importantly, I appreciate that there is a dark theme so that you aren’t forced to stab you eyes with the painfully bright light hues. This is essentially a minimum requirement for me at this point. If I cannot get a dark theme, I don’t want to use it (Ahem, Hangouts).

What I Don’t Like

Understanding how this whole encryption thing works, and how your credentials are stored on the main Matrix server. I understand that your key is encrypted at your end and stored on the Matrix server but what exactly does that mean, I am not sure. I thought the benefit of Matrix is that it is all decentralized.

It took me a bit of time to get my head wrapped around what Matrix was vs Element. I would hear, “Matrix is the protocol not the client” and I didn’t quite grasp it. I also don’t like it that some clients just don’t work that well. Now that Element is here, I can see it as being the main client to be used, maybe even universally. Parts of the setup of Element / Matrix are a bit dubious but much of that has been cleaned up quite nicely.

Next Steps

Where to, from here. Now that I have a client for Matrix that is pretty darn great, I am going to explore the other possibilities. I see a lot of potential in simplifying my life with communication. I loath using Facebook Messenger and the way I am using SMS has not been ideal. Matrix has the possibility of removing two irritations of mine and I look forward to making this happen. I have decided to break out the bridges to their own discovery experiences and will blather about those in the future.

Final Thoughts

Matrix is now a highly polished, accessible experience for secure communication on the Internet. It is a decentralized system but also has a centralized hub for simplicity of connectivity. It really appears as though they have the little papercuts worked out and have really made available a great system to be used by any.

It’s still early days for this Element Client but things are looking pretty good. I don’t expect I will get friends and family on it anytime soon as it is a bit more work than Telegram but for those other tech enthusiast out there and for simplicity of my communication platforms, this looks like the ticket. The real question is going to be, how reliable this and the bridges are to use long term.

Do I recommend Element as a Matrix chat client? Absolutely. I look forward to its continued use.

References

https://flatpak.org/setup/openSUSE/
https://software.opensuse.org/package/flatpak
https://element.io/
https://matrix.org/bridges/

Facebook Container Tab in Firefox

Guard Your Privacy Online

An unfortunate reality to life online today is that some popular sites do not respect your privacy at all. The issue is not the data that you knowingly and freely give them. The issue is that they collect data on you without explicit consent. Oh, sure, you do agree to their “terms of service” that are written in legalese and all the important bits are buried in the depths of it. Facebook is quite possibly one of the worst offenders to stalking you around the internet. It’s one thing to be “watched” when using the Facebook properties as it only makes sense that they are monitoring what you do, what you post and so forth, it’s another thing for them to track you when you go to other sites. That is stalking and although legal, it is not at all ethical. The solution, using Facebook Container Tab in Firefox.

The purpose of this article is to give you a layer of protection against being stalked by Facebook. If this is all the information you need to convince yourself of the benefits. Install Firefox, if you haven’t already been using it then install the Facebook Container tab.

This is the first of what will be many security and privacy tips that I hope average folks can use. Although most of what I write targets Linux and specifically openSUSE Linux; I am straying just a bit. This article also assumes that you have some idea how to install software on your particular operating system.

Installation

If you are running a modern Linux distribution, you likely have Firefox installed by default. There are some unfortunate exceptions of which I cannot recall nor do I care to recall at this time. openSUSE, Ubuntu, along with its flavors, Fedora and MX Linux have it installed by default.

Windows, and MacOS, you will have to navigate here:

https://www.mozilla.org/en-US/firefox/new/

For a Linux user, Firefox should be in the main package repository. Consult your specific distribution if, for some extremely odd reason, you do not have it already installed. You can also use the aforementioned link to get a tar.gz archive and follow those instructions there.

Firefox truly is the best browser you can have on any computer and this Facebook container tab really cements it in for me. To get the add-on, follow this link:

https://addons.mozilla.org/en-US/firefox/addon/facebook-container/

Why it’s Important

Many sites are collecting as much personal data from you as they can to make a dollar off of you. To be clear, I am not bothered by advertising on websites. What I am bothered by is advertising that stalks you. I also have to acknowledge that this site uses Word Ads so there is something I don’t like going on there (I’ll have a better solution eventually).

One of the worst offenders is Facebook. Even if you don’t have a Facebook account, you visit a site that has some sort of Facebook tie-in, they will create a kind of “shadow profile” on you and stalk you around the web. For those that have a Facebook account, which includes Instagram, and you want to use it in a safer, more privacy respecting fashion.

The Facebook Container Tab extension on Firefox the best way to use a site that is hostile to your privacy and prevent excessive tracking. It helps you take control and isolate your web activity from Facebook.

What Does it Do?

Facebook Container works by isolating your Facebook identity into a separate container that makes it difficult for Facebook to track your visits to other websites with third-party cookies. In effect, you are only allowing Facebook to track what you do on their web properties, not on the entirety of the Internet.

Facebook Container Add-on

How it works

This extension secures your Facebook tabs. When you close the tab, it deletes your Facebook cookies, and logs you out of Facebook. The next time you navigate to Facebook it will load in a new browser tab (the “Container”). It can be distinguished with another color or in my case, it underlines the tab.

Facebook and Instagram tabs are underlined to identify it being in its own container.

Once the extension is installed, you don’t have to think much of it. Log in and use Facebook normally. The browser will automatically detect if you are going to a Facebook property. Should you click on a non-Facebook link or navigate to a non-Facebook website in the URL bar, these pages will load outside of the container, in effect preventing the stalking and monitoring of Facebook.

Something that has become quite common is seeing a “Facebook Share” buttons on other sites. If you should click on that share, Firefox will load them within the Facebook Container. You should know that using these buttons passes information to Facebook about the website that you shared from.

Facebook share… beware

The Price of Security Costs in Convenience

How you engage other websites outside of Facebook may be impacted by the container tabs. Most of what I view doesn’t have this encumberment but you are not likely me. As is such, some website features will not function as you may expect.

Since you will be logged into Facebook only in the Container, embedded Facebook comments and Like buttons in tabs outside the Facebook Container will not work. This is how Facebook is prevented from associating information about your activity on websites outside of Facebook to your Facebook identity.

If you have used Facebook credentials to log into into In addition, websites. First of all, bad idea. Giving Facebook keys to other accounts is a terrible, terrible idea. That is like throwing your wallet and keys in the front yard with a sign pointing down to detailed instructions about which keys access your home, car and bank account.

If you want a password manager. You can read about Bitwarden here and decide for yourself if you want to use it. If you would like to sign up for a free account, navigate here.

Facebook credentials will generally not work properly with this extension because it is designed to separate Facebook use from use of other websites. This is the cost of convenience but I have provided a much better solution with Bitwarden.

What Facebook Container Does Not Do

This extension does not prevent Facebook from mishandling the data it already has or that you have given to it. Facebook will do what Facebook does. Whatever you do on Facebook, automatically assume that you have permitted all of Facebook and any of its partners to pass around your data like a dish of mashed sweat potatoes at a family dinner. Facebook has access to everything that you do while you are on Facebook.com, or Instagram.com and WhatsApp. This includes Facebook posts, comments, photo uploads, likes or other emotional responses as well as any and all data you share with Facebook connected apps.

Ideally, none of us should use Facebook but that is one of the “city centers” of the Internet. Likely, it is a service you find valuable and you should have tools to limit what data Facebook can obtain. This extension focuses on limiting Facebook tracking, but other ad networks may try to correlate your Facebook activities with your regular browsing.

Additional Notes

This extension alone is not going to prevent every bit of tracking in association with Facebook. This is but one layer or one other line of defense to protect you. In addition to this extension, you can change your Facebook settings, use Private Browsing, enable Tracking Protection, block third-party cookies, use an Ad blocker like uBlock Origin and/or use Firefox Multi-Account Containers extension to further limit tracking. Implementing all of these bits at one go may not work out for you so add them one at a time to see how many conveniences are wroth giving up for a little more security and privacy.

You may wonder if Mozilla collects data from your use of the Facebook Container extension. All they receive are the number of times the extension is installed or removed. If you would like to learn more and its specifics, feel free. It’s open source.

There are already container features that are built in to Firefox. When you enable Facebook Container, you may also see Containers named Personal, Work, Shopping, and Banking while you browse. If you wish to use multiple Containers, you’ll have the best user experience if you install the Firefox Multi-Account Containers extension. More information about containers can be obtained from the Mozilla support site.

What I like

I have, in effect, cut Facebook off from stalking me around the internet. They are not able to monitor my activities outside of Facebook and make advertising recommendations to me based on my interests.

Isolating Facebook in a tab and closing it truly cuts Facebook off from my browser and computer. Think about it. With other solutions, like using Google Chrome, when you “log out” of Facebook or close the tab that had Facebook running in it. There is still code running on your computer and reporting back Facebook on your activity. This happens regardless of whether or not you have a Facebook account. Container tabs allows the freedom of the information without the associated costs in loss of privacy.

What I Don’t Like

I don’t like that this extension isn’t activated by default. Although, I do understand why they would not as the uninformed or oblivious user would think there is something wrong with Firefox and potentially abandon it when some external sites Facebook plugins wouldn’t work properly. Rather than frustrate the user by having it active by default (which would be my choice), they deactivate it and let the informed user protect themselves.

The Android mobile Firefox client does not support this extension and that annoys me quite a bit. I am not sure why the mobile app is crippled. Perhaps it is a different web engine. I know that Firefox uses the WebKit instead of the Gecko rendering engine on iOS but I don’t know about Android for sure.

That’s all I can think of for what I don’t like about it. This is the only way I will use Facebook, on my computer using Firefox. I do not feel comfortable browsing Facebook without it having its healthy boundaries set.

Final Thoughts

Security on the World Wide Web is not as simple as it once was. Many sites, generally from “big tech” are not being very respectful of your privacy and are preying on your ignorance of their actions. They get away with it by creating these massive End User License Agreements (EULAs) that you have to agree to in order to use their site. They don’t make it clear that just by browsing to their site, they are implanting code on your computer’s browser to track and monitor you and what you do, mostly for ad revenue but maybe for other nefarious activity.

Facebook containers will prevent some of that stalking. It will contain the tracking but that is it. This is one of many steps that should be taken when making voyages across the “scary internet”. Prepare yourself and your computer. Use Firefox and enable the Facebook container tabs, even if you don’t have a Facebook account. Your identity, privacy and security are quite important in so many ways. This is a no-cost option with a minor penalty in loss of convenience. Check it out, see if it is sustainable. Once you see the benefits of container tabs, you won’t regret the decision to go Firefox.

References

Download Firefox from Mozilla.org
Facebook Container from addons.mozilla.org
Bitwarden a Secure Password Manager on openSUSE
Get Bitwarden Password Manager
Multi-account Containers from addons.mozilla.org
https://github.com/mozilla/contain-facebook
https://support.mozilla.org/en-US/kb/containers

Noodlings | BIOS Games Serving the NDI™ Plugin

Another prime number… and no the title doesn’t make sense. It’s just a nonsensical way to string everything together.

19th Noodling on a mid-August night

18 Episodes… 18 is a fun number. Divisible by 2, 3, 6 and 9. The age you can vote in the United States.

Fun facts about chocolate milk can be found here

BIOS Update Dell Latitude E6440 on Linux

My BIOS was 4 years out of date. I thought it was time to update it. I went to the Dell Support page and noticed that they only had *.exe files available. I sighed and was initially frustrated because my initial supposition was that I was going to have to have a working copy of Windows to do the update. 

AntiMicro | Map Keyboard and Mouse Controls to Gamepad on openSUSE

Installed a game called Pokemon Insurgence on Lutris and there was no way to play the game with a gamepad. Rather than try to fight things, set out for an application that would map the keyboard controls to the WiiU Pro Controller that has become my gamepad of choice.

CPU Downgrade

After receiving this message following a BIOS upgrade, I was forced to purchase a lower powered CPU for my AMD Workstation.

OBS NDI™ Plugin on openSUSE

The NDI plugin offers a fairly easy way to send OBS video signal (presumably other applications can take advantage of this too) to another OBS instance on another machine. This can come in handy for numerous reasons such as splitting up workloads between machines by capturing output from one machine, such as gaming computer, to stream with a dedicated unit that interfaces with YouTube.

BDLL Followup

What have you done that would cause you to lose your Linux card

openSUSE Corner

New Prototype Builds Bringing Leap, SLE Closer Will be Available Soon

The release manager for openSUSE Leap, Lubos Kocman, has updated openSUSE’s develop community on efforts to bring the codes of Leap and SUSE Linux Enterprise closer together.

Tumbleweed Roundup

  • 20200805 Stable 99
    • MozillaThunderbird (68.10.0 -> 68.11.0)
      • Several CVEs addressed
    • transactional-update (2.22 -> 2.23)
      • Subpackages: transactional-update-zypp-config
      • Version 2.23
      • Add “run” command to be able to execute a single command in a new snapshot
      • Add “–drop-if-no-change” option to discard snapshots if no changes were performed (BETA, required for Salt integration)
      • Removed previous CaaSP Salt support (gh#openSUSE/transactional-update#33)
      • Avoid “file not found” message on systems without /var subvol
  • 20200810 Score of a moderate 84
    • epiphany (3.36.3 -> 3.36.4)
    • gcc10 (10.2.1+git465 -> 10.2.1+git501)
    • gnome-mines (3.36.0 -> 3.36.1)
    • kernel-source (5.7.11 -> 5.8.0)
    • squid
    • zypper-lifecycle-plugin (0.6.1490613702.a925823 -> 0.6.1596796104.87bdab7)

https://review.tumbleweed.boombatower.com/

Computer History Retrospective

Computer Chronicles – Fifth Generation Computers (1984)

The pioneers in the field talk about 5th generation computers capable of Artificial Intelligence and heuristic learning; giving computers context. In 1984, computers were already being used to make knowledge based decisions.

The Computer Chronicles – Fifth Generation Computers (1984)

Final Thoughts

Take some time to have fun. Good, clean wholesome fun. Go for a walk, enjoy the weather on any day that it is possible. Take some time to cherish each moment, whether it is good or bad, find the positive in the situation and make it a point to say “thank you” as often as possible.

OBS NDI™ Plugin on openSUSE

The NDI plugin offers a fairly easy way to send OBS video signal (presumably other applications can take advantage of this too) to another OBS instance on another machine. This can come in handy for numerous reasons such as splitting up workloads between machines by capturing output from one machine, such as gaming computer, to stream with a dedicated unit that interfaces with YouTube. This has advantages in that you can move the machine doing the heavy lifting into another room or across the room as to not hear the fans and so forth. In my case, my primary machine is getting long in the tooth. I prefer the setup I have as far as the screen layout and height of the computer as well as the location. I use my AMD Desktop / server / workstation machine to talk to YouTube or Twitch directly with that OBS instance and record locally in effect freeing up my laptop from quite a bit of the workload.

The Challenge

At the time of writing, there isn’t an RPM available and the instructions out there along with what to expect seems lacking at best, so, I thought I would take what I know and compile it into one easy, step-by-step guide here for openSUSE. Your mileage may vary depending on your distribution.

Installation

For starters, you need to get the software packages from GitHub.

https://github.com/Palakis/obs-ndi/releases

Download the following:

The version numbers may have changed but you should get the “libndi*” and “obs-ndi*” packages

This is a Debian package meant for Debian/Ubuntu so you may be thinking, “how am I supposed to use this?” …and that is a reasonable question. The solution is a tool that is not often talked about. It is also likely not recommended by most people but I am not most people. That tool is called “Alien“.

To install Alien, navigate here and just click on the appropriate experimental package for your version of openSUSE:

https://software.opensuse.org/package/alien

Alternatively, you can use the terminal method, which will very a bit between distributions

Tumbleweed

sudo zypper ar https://download.opensuse.org/repositories/utilities/openSUSE_Factory/ utilties
sudo zypper ref
sudo zypper install alien

Leap 15.2

sudo zypper ar https://download.opensuse.org/repositories/utilities/openSUSE_Leap_15.2/ utilties
sudo zypper ref
sudo zypper install alien

To explain each of the lines that I am expecting you to put in the terminal because you should NEVER just trust some random commands on the internet. First of all, I stand behind this as CubicleNate, and I do my best to not be wrong and I’d like to keep doing these things. You can also reacho ut to me directly using any of these methods.

Once the installation of Alien is complete. You will have to take the two deb packages previously downloaded and convert them.

Using a terminal, navigate to the location of the downloaded packages and run the following

sudo alien -r libndi*.deb  
sudo alien -r obs-ndi*.deb  
sudo zypper in ./libndi*.rpm obs-ndi*.rpm

Now your are ready to set up OBS!

OBS Setup

Using this reference, I made the adjustments to my firewall but it didn’t work. Perhaps I am missing something and I would love to edit this article accordingly but opening up both tcp and udp ports 5960 through 5968 as well as having the mDNS port active did not allow me to utilize the NDI plugin with firewalld active. Either the documentation is out of date, in correct or there is a user error on my part and I couldn’t find the appropriate logs to tell me otherwise. Therefore, I just deactivated the firewall on both the source and destination machines.

sudo systemctl stop firewall

This is the point where you should be sorely disappointed with these instructions but again, I would like to improve this and will gladly listen to any input.

The next step is to open up OBS-Studio (v25 and latter is required) on both machines. On the source machine, go to Tools > NDI™ Output settings

Then set the output preferences. In my case, I had not interest in sending the “Preview Output” only the “Main Output” and label it with the hostname; just in case I might do this with another machine.

On the Destination OBS machine, you have to add the NDI Source. This is just one of the many options you have available as a source.

For the source name, select the drop-down and the appropriate available source. I didn’t mess with any of the other settings so your mileage may vary on this portion of the instructions as well.

And that is it. Your NDI Source is just another input like a webcam or video signal and you are off to the streaming or production races.

Final Thoughts

The whole firewall thing has me a bummed out a bit. I have wrestled around with it far too long but at least I know that lowering my “shields” will allow for transporters to work. Not ideal but I am within my firewalled off house, I just happen to like security in layers.

I want to note that the latency on this is VERY low. I mean incredibly low. I have tested this by playing a game on one machine and using the output on another machine with almost no latency perceived. It is quite the incredible technical miracle and I am quite grateful.

I also want to make the vintage computer tie-in. The NDI plugin is developed by Newtek, the makers of the Video Toaster that was very popular on the “big box” line of Amiga computers from the 1990s. So, in a way, I feel like I have a little bit of that incredible Video Toaster tech on my openSUSE machine.

References

OBS-NDI on GitHub
https://obsproject.com/forum/resources/obs-ndi-newtek-ndi™-integration-into-obs-studio.528/updates
NDI Problem Solving PDF

AntiMicro | Map Keyboard and Mouse Controls to Gamepad on openSUSE

Installed a game called Pokemon Insurgence on Lutris and there was no way to play the game with a gamepad. Rather than try to fight things, set out for an application that would map the keyboard controls to the WiiU Pro Controller that has become my gamepad of choice.

I know I heard it was possible on a podcast some time ago and since I was probably doing something else and didn’t have a notebook handy to write down whatever it was, I began my search and found this AntiMicro as a solution.

A quick note, this is not a comprehensive and exhaustive analysis of all of its features. I am covering just a portion of the features.

Installation

AntiMicro is in the official repositories for both Leap and Tumbleweed. To do the graphical click method, navigate here:

https://software.opensuse.org/package/antimicro

Alternatively, you can install it through the more exciting and personally gratifying method of the terminal:

sudo zypper install antimicro

For other distributions, search “antimicro” in your favorite software management system.

The Problem Game

The game I wanted to set up to use a controller is Pokémon Insurgence. I observed my oldest child watching a play through on the YouTube and he spoke of interest in the game. I found the game on the Lutris site with an easy installation process.

The game I wanted to set up to use a controller is Pokémon Insurgence. I observed my oldest child watching a play through on the YouTube and he spoke of interest in the game. I found the game on the Lutris site with an easy installation process.

https://lutris.net/games/pokemon-insurgence/

The issue is, there was no way to have this game use any control pad. Only the keyboard. I thought this annoying and didn’t play the game… until AntiMicro, that is!

Configuration

The configuration of AntiMicro is incredibly straight forward. So much so that this little write-up is almost unnecessary but I thought I would share my experience anyway. When the application starts up and the system is absent any controllers, you will be presented with this screen.

What is pretty fantastic is that when you do activate, or plug in a controller, there isn’t any fiddling required. The application immediately reacts and presents some straight forward options.

I turned on my Wii U Pro Controller, my controller of choice on those periodic cases that I decide to play a game. The application immediately presented options.

At this point, you can push buttons on the controller and identify the buttons and in this process, I did discover that the A and B are swapped as well as the X and Y. I looked at the Controller Mapping configuration and it looks like the physical locations are correct but the labels seem to be incorrect.

I would call this a small papercut issue but it is indeed an issue. So beware of the labels and make sure that the button and the action are correct. It is best to verify.

I took some screen shots of the input configuration portion of Pokémon Insurgence so I could map the keys out.

For the arrow key configuration, you can very easily map it all onto the DPad and the joystick of your choice. I set both to control the movement of the character. There is, kindly, a present drop-down to make this selection.

Each of the other keys can be assigned but do take note that you assign the correct key to the correct button and verify labels. When you select the button, you can then select the corresponding key.

Not relevant for this game but just to make note, you can also map mouse movements which, I see as being valuable if you want to configure a controller to manage mouse movements without using the Steam to do so.

After completing and subsequently tweaking my button selection. I was able to play a solid 10 minutes of Pokémon Insurgence on my Linux machine quite happily. At this rate, I might get through it in the next 6 years or so.

What I Like

The configuration is splendidly simple to set up. It is very intuitive and does as you would expect. I appreciate how easy it is to set up and get going with it.

The on screen information about what you are doing is very appreciated. Rather than digging through help or readme files, the important information presents itself.

Finally, this is a Qt application so it integrates nicely into Plasma and my dark theme looks great. It is as though the interface was tested against Breeze dark as there were not any unreadable bits to the application.

What I Don’t Like

The one little papercut of the reversal of some buttons is unfortunate but not a deal breaker. It’s only important if you actually read the buttons and not go by the action flash.

The mouse controls isn’t exactly as I was hoping. The movement of the cursor didn’t exactly have the variable movements I was expecting but there are so many options, there is, perhaps one that would give a kind of gradient movement. So, this is not really a knock on the application as the default is probably best for most users. I would say, this is a knock on me for not being satisfied with what is likely a sane default.

Final Thoughts

AntiMicro is a fantastic application, especially if you play old DOS games or other emulated games that don’t have adequate controller support. This also has the bonus feature of being able to easily map your controller to act as a mouse which may be a nice addition to a media set-top box for the living room.

I am glad I stumbled on this and I wish I could give attribution to where I recently heard about it but seeing as I don’t recall, I will miss the opportunity to link to that source. If I do find this I will add an edit.

If you have some games that don’t play nice with controllers, try AntiMicro, it just may give that old game a fresh coat of paint.

References

https://software.opensuse.org/package/antimicro
https://github.com/AntiMicro/antimicro

BIOS Update Dell Latitude E6440 on Linux

…Sort of. It didn’t require using Windows

My BIOS was 4 years out of date. I thought it was time to update it. I went to the Dell Support page and noticed that they only had *.exe files available. I sighed and was initially frustrated because my initial supposition was that I was going to have to have a working copy of Windows to do the update. My last Dell Latitude, a D630, the BIOS updates required a lot of fiddling on my part. At the time, I would burn a special FreeDOS CD with the BIOS update EXE on it. I figured I would have to do the same with this computer. The good news is, that is not the case and it could be I am the last person to know this bit of information.

I am not sure how well known this process is, but the good news is, you don’t need Windows to do the BIOS update. Where I went to get the BIOS is here:

https://www.dell.com/support/home/en-us/product-support/product/latitude-e6440-laptop/drivers

I searched for “BIOS”

After a bit of searching, I found this page at Dell.com that explains how to update the BIOS on Linux or Ubuntu systems.

https://www.dell.com/support/article/en-us/sln171755/update-the-dell-bios-in-a-linux-or-ubuntu-environment

In short, the way to do this is to take the downloaded BIOS update .EXE and put it onto a FAT32 formatted USB Drive. It is quite important that you use FAT32.

An easy way to check is to use Gnome Disks, Gparted or KDE Partition Manager to verify.

Once verified that you are indeed using FAT32, copy the BIOS update .EXE to the USB Drive.

Reboot the computer and one the Vendor image appears, press F12 for the One-time boot menu.

Then select BIOS Flash Update.

The flash update tool is a simple GUI. Select the button to the top right with an ellipsis.

Next, you will be presented with a file dialog GUI where you can navigate to the USB drive. Ensure you select the correct file and follow the prompts. If you do not see the file, select the drop-down tool adjacent File System:

Select the appropriate BIOS .EXE then OK

Next select Begin Flash Update.

The big warning is to keep your computer plugged into the “mains” and do not interrupt the process as it could possibly “brick” your system. The process takes a few minutes to complete and the computer will automatically reboot.

Assuming it all goes well, you really shouldn’t notice a difference as the issues being fixed are under the surface.

Just to check, that the BIOS is indeed now updated. I ran this in terminal:

> sudo dmidecode --type 0

Then you will get the resulting output.

# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
       Vendor: Dell Inc.
       Version: A24
       Release Date: 06/13/2019
       Address: 0xF0000
       Runtime Size: 64 kB
       ROM Size: 12288 kB
       Characteristics:
               PCI is supported
               PNP is supported
               BIOS is upgradeable
               BIOS shadowing is allowed
               Boot from CD is supported
               Selectable boot is supported
               EDD is supported
               5.25"/1.2 MB floppy services are supported (int 13h)
               3.5"/720 kB floppy services are supported (int 13h)
               3.5"/2.88 MB floppy services are supported (int 13h)
               Print screen service is supported (int 5h)
               8042 keyboard services are supported (int 9h)
               Serial services are supported (int 14h)
               Printer services are supported (int 17h)
               ACPI is supported
               USB legacy is supported
               Smart battery is supported
               BIOS boot specification is supported
               Function key-initiated network boot is supported
               Targeted content distribution is supported
               UEFI is supported
       BIOS Revision: 65.24

I was just glad to see that 5.25″ floppy service is still supported. Just in case it comes up, I can still utilize it.

Final Thoughts

Due to my laziness and inhibition to use Windows caused me to avoid pursuing updating my BIOS. Dell, on newer systems (~2015 and later), have built in a service to perform these updates outside of the operating system and has removed or eliminated your excuses for keeping your system up to date and more secure.

I am glad I took the time today to figure this out and do the proper thing in keeping my system updated.

References

https://www.dell.com/support/article/en-us/sln171755/update-the-dell-bios-in-a-linux-or-ubuntu-environment
https://www.dell.com/support/home/en-us/product-support/product/latitude-e6440-laptop/drivers
Playing in the terminal | dmidecode

Noodlings | Hardware is for the Terminal

18 is such an adult number. Perhaps I am truly becoming a grown up podcast here.

18th Noodling of mid-summer musings

18 Episodes… 18 is a fun number. Divisible by 2, 3, 6 and 9. The age you can vote in the United States.

LG 29″ UltraWide | Monitor Upgrade and Configuration on Linux

I have historically made my hardware decisions based on price, generally I get what I can get for as low or as reasonable as possible. Basically, I go for free or near-free and fabri-cobble something together. After seeing some other computer setups, I have really thought that I want to be able to function more effectively and efficiently than I had been. One of the areas that I have been less than happy has been my monitor layout. I have been pushing 3 displays with my Dell Latitude E6440 and for the most part, it has been meeting my needs but there were some work flows that have not been working out so well.

Tmux Terminal Desktop

I can’t say that I ever spent my childhood wishing I had the ultimate terminal desktop but the more I have played on Linux, the more I have spent time in the terminal and I really can’t explain why I find it so charming. Perhaps it is the low memory usage of the applications? The clever modern implementation of certain terminal applications? I can’t really say, but there is something incredibly charming about the terminal.

Turn off Monitor using CLI

This is another gift to future me from present me. I made the mistake of not properly writing this down before so I had to search for the answer. The problem is, sometimes, it seems as though Plasma is not shutting off my external screens consistently. I can’t say why but I have a suspicion that it is due to a specific communication application as I can almost guarantee that it is preventing my screens from turning off. I don’t have definitive proof of this so I am not going to put it in writing.

BDLL Followup

Keyboards and mechanical keyboard talk

openSUSE Corner

Release Team to have retrospective meeting about openSUSE Leap 15.2

Members of the openSUSE community had two retrospective meeting on the release of openSUSE Leap 15.2 after receiving feedback from the recent survey.

Leap 15.2 Install party @ GOLEM – A quick report

Italian Linux users did an openSUSE Leap 15.2 Launch Party, at the local LUG (it’s called GOLEM, it’s in a small town in central Italy), and Dario Faggioli made a quick report.

Tumbleweed Roundup

  • 20200730 Stable 99
    • MozillaFirefox (78.0.2 -> 79.0) Numerous CVEs addressed
    • snapper (0.8.11 -> 0.8.12)
      • Subpackages: libsnapper5 snapper-zypp-plugin
      • fixed error when using mksubvolume to create /tmp (bsc#1174401)
    • yast2 (4.3.17 -> 4.3.19)
  • 20200731 Stable 99
    • ghostscript
    • kernel-source (5.7.9 -> 5.7.11)
      • iwlwifi: Make some Killer Wireless-AC 1550 cards work again (bnc#1012628).
      • dpaa_eth: Fix one possible memleak in dpaa_eth_probe (bnc#1012628).
      • m68k: nommu: register start of the memory with memblock (bnc#1012628).
      • m68k: mm: fix node memblock init (bnc#1012628).
      • clk: qcom: gcc: Add GPU and NPU clocks for SM8150 (bnc#1012628).
      • ALSA USB-audio bug fix, driver improvements for realtek audio
      • Improvements to USB Serial
      • Intel_th added support for Jasper Lake CPU
  • 20200803 Pending Score of a Stable 93
    • aaa_base (84.87+git20200708.f5e90d7 -> 84.87+git20200507.e2243a4)
      • Too many improvements to list but suffice to say, lots of code cleanup and bug fixes
    • adwaita-qt (1.1.1 -> 1.1.4)
    • dnsmasq (2.81 -> 2.82)
    • polkit (0.116 -> 0.117)
      • memory management fixes
      • read-only-root-fs (1.0+git20200121.5ed8d15 -> 1.0+git20200730.1243fd0)
    • As an aside, bluetooth audio is properly working again.
  • 20200804 pending Stable 97
    • iso-codes (4.4 -> 4.5.0)
    • ncurses (6.2.20200613 -> 6.2.20200711)
      • fixed pound sign mapping in acsc
      • additional changes for building with visual Studio C++

Computer History Retrospective

Computer Chronicles – Printers

At this time, printers were divided up in two classes, impact and non-impact. Emerging technology in in laser printers was being developed.

Final Thoughts

Life can be full of surprises, sometimes you can get a curve-ball thrown at you. It might really throw a wrench in your plans and mess up your plans in life.

Don’t put it off, don’t ignore it. Face that challenge head on. Begin immediately on unwinding the bailiwick. I promise you won’t regret that decision.

Turn off Monitor using CLI

This is another gift to future me from present me. I made the mistake of not properly writing this down before so I had to search for the answer. The problem is, sometimes, it seems as though Plasma is not shutting off my external screens consistently. I can’t say why but I have a suspicion that it is due to a specific communication application as I can almost guarantee that it is preventing my screens from turning off. I don’t have definitive proof of this so I am not going to put it in writing.

My intent is to have a shortcut for turning off all my screens instead of just locking them and hoping that the desktop environment will do its job of turning them off. I do want to point out that when I was using Windows, both 7 and 10, I had this problem too so it is absolutely not an issue with Desktop Linux.

It is fun being able to understand how to talk to a Linux machine through the terminal using the CLI (Command Line Interface). The more you know about how to work with it, the more you will ultimately enjoy your journey in Linux. Here is my solution.

The Commands

The commands I found out there in the vastness of the world wide web lead me to this that I have tested on multiple machines. Two were running Tumbleweed with Plasma and the other Leap 15.2 with Plasma.

xset -display :0 dpms force off

The other command is to force the screen on. This is useful as I have had issues where after undocking my machine, my screen would forget to turn on. I can’t say the reason why but this could also use a Global Shortcut

xset -display :0 dpms force on

The Script

I created a little shell script for turning off my screen called screenoff.sh. I can’t say for sure how all distributions handle this but I have a bin directory in my home folder, so this is where I have chosen to place this script. ~/bin

Using nano, I created a bash script for this.

nano ~/bin/screenoff.sh

Then filled it in with this information

#!/bin/bash

sleep 1
xset -display :0 dpms force off

The purpose of the sleep 1 line is to give me a chance to get my hand away form the keyboard and mouse so I don’t inadvertently cause the desktop environment to wake the screen.

Next I made the file executable. There are many ways to do it but since we are playing in the terminal:

chmod +x ~/bin/screenoff.sh

To test this out, using krunner or open a terminal and type screenoff.sh should turn off your screen. If not, something is wrong and maybe we can figure it out…

Custom Shortcut

It is not real practical to open up krunner or a terminal just to shut off the screen when I have the power to create a custom shortcut in Plasma. Here is how to do it. First open up System Settings and choose the shortcuts module. Your system settings may look a bit different but I am sure you can figure it out. I have faith in you.

Next you have to select the “Custom Shortcuts” submodule.

At the bottom of the list there is an Edit button with a down arrow. Select that > New > Global Shortcut > Command/URL

Name it whatever makes sense for you. I chose the name “Screen Off” to make it pretty clear. Set your shortcut. I chose Meta+Alt+O.

Next, Select the Action tab and enter the path of the script you just created. In my case, it is:
~/bin/screenoff.sh

Select Apply and test it out!

Final Thoughts

Plasma is real easy to customize to your liking. I am very happy with this small modification to make my desktop experience a bit more suited to my personal taste. I don’t expect that this is a very common use case but since I know I am an edge case in much of what I do, this helps me to remember and hopefully there will be at least one person that can use or adapt this to their own case.

I am not a terminal expert so if there is any way that this can be improved, please contact me or comment below

References

Terminal Applications
https://askubuntu.com/questions/62858/turn-off-monitor-using-command-line
https://unix.stackexchange.com/questions/16815/what-does-display-0-0-actually-mean

Tmux Desktop on openSUSE Linux

I can’t say that I ever spent my childhood wishing I had the ultimate terminal desktop but the more I have played on Linux, the more I have spent time in the terminal and I really can’t explain why I find it so charming. Perhaps it is the low memory usage of the applications? The clever modern implementation of certain terminal applications? I can’t really say, but there is something incredibly charming about the terminal.

My pursuit of having a terminal based “desktop” was Inspired by Linux Unplugged Presentation. A rather nice article and I fell into this hole of terminal excitement

Build your own Desktop in the Terminal Linux Unplugged Article

After some exploration and some fiddling. I have put together a little resource for today me and future me. Hopefully this has some interest for you and I am open to other suggestions for making my Terminal based Desktop even better.

Tmux Terminal Desktop

The possibilities are seemingly endless as the bandwidth required to sustain this is really quite low.

LG 29″ UltraWide | Monitor Upgrade and Configuration on Linux

I have historically made my hardware decisions based on price, generally I get what I can get for as low or as reasonable as possible. Basically, I go for free or near-free and fabri-cobble something together. After seeing some other computer setups, I have really thought that I want to be able to function more effectively and efficiently than I had been. One of the areas that I have been less than happy has been my monitor layout. I have been pushing 3 displays with my Dell Latitude E6440 and for the most part, it has been meeting my needs but there were some work flows that have not been working out so well.

What I had before was a kind of ah-hoc solution. I started with one monitor than wanted more screen real estate so I placed it off to one side because that is just what made sense at the time.

What I had here was a laptop screen with 1920×1080 (FDH) resolution. A monitor directly above with a resolution of 1440×900 (WXGA+) and off to the top right a screen with the resolution of 1280×1024 (SXGA). Both of those monitors I purchased for $10 each from a company upgrading everything. I was pretty happy as going from one monitor to a second was fantastic and adding a third made it even better.

The problem I ran into was that the monitor above was not Full HD and sometimes it made for some usability issues with certain applications. That was compounded by having a monitor to the right with a physically slightly taller display but pixel wise, quite a bit taller and it just made things weird when moving from monitor to monitor.

The solution presented to me by my e-friend, Mauro Gaspari is ultimately what I started to pursue when he sent me a picture of his screen setup on Telegram. What he had (probably still has) is a 1440p monitor. I had never seen such a thing, it was so clean and made so much sense, especially with the ability to tile windows. So, began my search and measuring to see what was feasable. Fast forward to about eight months later, I purchased the LG 29WK50S-P. This is a 2560×1080, 29″ with a 60Hz refresh rate.

Initially I wanted to go with a 3440×1440 (WQHD) screen but I couldn’t get one at the size and price I wanted. Since I don’t have a whole lot of space and the distance it will be away from my face, any bigger than 29″ diagonal would take up too much space. I also didn’t want to spend a whole lot so what I payed was $179.10 for this monitor and I am quite happy with the price. Sure, more than the $10 I spent on the last monitor but a heck of a lot more pixels.

Features

The description of this this monitor is a 29 Inch Class 21:9 UltraWide® Full HD IPS LED Monitor with AMD FreeSync. It has the following features

  • AMD FreeSync™ Technology
  • Dynamic Action Sync
  • Black Stabilizer
  • OnScreen Control
  • Smart Energy Saving
  • Screen Split to give you different picture choices with the monitor.

None of these features were all that important to me. What I was most concerned about was the resolution and VESA mount. The split screen feature, to which I mostly don’t care about, is intriguing as I could use the second display input and do some testing on other distributions with another computer.

I really wasn’t asking for much in a monitor, really. I am going to take advantage of the AMD FreeSync at this time either but it is nice to know it’s there.

Initial Setup

I have been spoiled in openSUSE Linux for years and years. I haven’t really had to fiddle with anything to get my computer to use hardware. I expected this ultra-wide monitor to be just as un-fiddly but it wasn’t. For whatever reason. The display didn’t recognize to computer its proper resolution.

I don’t know why if it is because it falls under the “other” resolution category or if there is some other issue. I am running Tumbleweed so I do have the latest drivers and since this monitor has been around for a while, I wasn’t expecting any issues.

The Plasma Display Settings didn’t give me the option of 2560×1080 at all, a quick DuckDuckGo search which brought me to the solution to my troubles here on the openSUSE forum. I started out by using some “old school” xrandr commands.

First I started out by defining a new mode:

xrandr --newmode "2560x1080_60.00"  230.76  2560 2728 3000 3440  1080 1081 1084 1118  -HSync +Vsync

Then I added a mode to the specific output.

xrandr --addmode HDMI-3 2560x1080_60.00

Then I sent the command to change the mode of the screen

xrandr --output HDMI-3 --mode 2560x1080_60.00

This worked but it is not a permanent solution as the next time I were to reboot, I would lose these settings. That made it time to do an Xorg configuration file for this monitor. Thankfully, it is just one simple text document.

Permanent Solution

Using the handy dandy terminal, once again, I navigated to the appropriate folder

cd /etc/X11/xorg.conf.d/

Then instead of creating a standard type of file that could be overwritten like “50-monitor.conf“, I created a custom one for this particular monitor.

sudo nano 49-LG29WK50S.conf

There is not much in this configuration file, just the modeline and preferred mode along with the Identifier of HDMI-3:

Section "Monitor"
   Identifier "HDMI-3"
   Modeline "2560x1080_60.00"  230.76  2560 2728 3000 3440  1080 1081 1084 1118  -HSync +Vsync
   Option "PreferredMode" "2560x1080_60.00"
EndSection

This allowed for the Plasma Display module to now have the proper mode available in the drop down and for me to do arrange the screen properly.

And now doing something like video editing feels a lot cleaner and the width only makes this task so much nicer to accomplish.

It’s not a perfect setup but it is a more perfect setup than what I had. What is nice is that I can very easily tile windows and jump to different applications without playing the, “where did I go” game.

I don’t know if I have any games yet that take advantage of the ultra-wide screen layout but from a productivity standpoint, this is fantastic.

I have been using it as the monitor with which I do CAD and I do like the wider display much better as the side menus are never in the way of the model itself. Also, the extended design history is almost entirely seen on larger models too.

Final Thoughts

Although the DPI is not the same between the laptop and the ultra-wide, I am happy with it. I don’t even know if I would want this monitor smaller or if maybe it is time to go up to a 15″ laptops screen. That would make the DPI closer to being the same between the laptop and the monitor. I am happy with it after one day of usage and over time, I am sure I will find irritations with the setup.

I want to note that I didn’t go for the curved screen. I don’t think I am quite ready for such a “radical” idea of having a screen curved towards me. Would it have been better? Maybe, I can’t really say and maybe the next screen I purchase will be curved so that I can compare. The way I see it, going from 16:9 resolution to 64:27 (21:9) was enough of a jump. Adding another bit of unfamiliarity of a curve in the display might have just thrown me off (insert smile emoji).

I have more “testing” to do with the monitor but for the $179.10 I spent on it, I think it was worth it. The contrast is nice, the brightness is nice, everything is very pleasing. This might very well be one of the best technology purchases I have made. I much prefer this to the ad-hoc, fabri-cobbled setup I previously had.

References

Ultrawide Monitor Help on the openSUSE Forum
LG 29WK50S-P Ultrawide LED Monitor product page
Display Resolutions on Wikipedia