Skip to content


2021 POSTS

2021-07-02 PKEXEC PLUS i3

I noticed, but finally got around to fixing, that i3 doesn't fire up any authentication mechanism for running an application as root. And RHEL/Fedora don't do the gksu thing. The way it's supposed to be done is via pkexec. Which fails since, in my case, the helper agent isnt running. Here is the fix:

  1. Install polkit-gnome

    sudo dnf install polkit-gnome

  2. Edit i3 config to have it start on launch

    exec --no-startup-id /usr/libexec/polkit-gnome-authentication-agent-1

With those in place you can start an application as root:


Replace APPNAME with, of course, your application of choice. You can also alias this in .bashrc, as that will simplify having to hammer that out each time.



Due to the fact I no longer use, nor plan to ever use Plex, I am removing the repo. It is currently just being robotically kept up to date (I presume) at this point anyway. If you wish to have my scripts, feel free to hit me up over on Matrix (


So a few weeks back, Fedora released pipewire-0.3.26-2. Well this caused me grief, so I downgraded. Decided after a bit of no further updates to update again and see if the issues still persisted. Indeed they did...

So what issues you ask. Glad you asked. That would be the rather minor issue of NO DEVICES FOUND!!!

So to ensure that you have pipewire fully installed, you will need to install:


If you are prompted for conflicts with regards to pulse, jack, or alsa, you will need dnf to allow erasing.

To fix things, you will want to:

sudo mv /etc/pipewire /tmp
sudo dnf reinstall pipewire.{x86_64,i686} pipewire-alsa.{x86_64,i686} pipewire-gstreamer.x86_64 pipewire-jack-audio-connection-kit.{x86_64,i686} pipewire-libs.{x86_64,i686} pipwire-pulseaudio
systemctl --user enable pipewire pipewire-pulse
systemctl --user restart pipewire pipewire-pulse

The above should resolve things.



Found mpsyt and I love it. However, installation was not smooth. And for whatever reason, the fix is easy and NOT in the release or dev branches.


So here's the fix.

First install the python packages

pip3 install --user git+
pip3 install --user youtube-dl dbus-python pygobject

Second we need to fix two python files that need one line added and fix the indentation on the rest of the code block. These blocks are easily found as there is a comment block stating that its a fix for an mpv change.

If you installed as above the files should be in the following location

cd ~/.local/lib/python3.9/site-packages/mps_youtube

So now comes to fixing the borked parts of code. So in the file we need to fix near line 224. And change the code block to be:

                if 'data' in resp:
                    if resp.get('event') == 'property-change':
                        self.setproperty(resp['name'], resp['data'])

And that entire try: code block should now look like:

            observe_full = False
            self._sendcommand(["observe_property", 1, "time-pos"])

            for line in self.socket.makefile():
                resp = json.loads(line)

                # deals with bug in mpv 0.7 - 0.7.3
                if resp.get('event') == 'property-change' and not observe_full:
                    self._sendcommand(["observe_property", 2, "volume"])
                    self._sendcommand(["observe_property", 3, "pause"])
                    self._sendcommand(["observe_property", 4, "seeking"])
                    observe_full = True

                if 'data' in resp:
                    if resp.get('event') == 'property-change':
                        self.setproperty(resp['name'], resp['data'])

                except socket.error:
                    self.socket = None
                    self.mpv = False

And the second file is going to be players/ The code block will begin at line 187. Fix it to be:

                    if 'data' in resp:
                        if resp.get('event') == 'property-change' and resp['id'] == 1:
                            if resp['data'] is not None:
                                elapsed_s = int(resp['data'])

And the whole try: code block should now look like:

                observe_full = False
                cmd = {"command": ["observe_property", 1, "time-pos"]}
                s.send(json.dumps(cmd).encode() + b'\n')
                volume_level = elapsed_s = None

                for line in s.makefile():
                    resp = json.loads(line)

                    # deals with bug in mpv 0.7 - 0.7.3
                    if resp.get('event') == 'property-change' and not observe_full:
                        cmd = {"command": ["observe_property", 2, "volume"]}
                        s.send(json.dumps(cmd).encode() + b'\n')
                        observe_full = True

                    if 'data' in resp:
                        if resp.get('event') == 'property-change' and resp['id'] == 1:
                            if resp['data'] is not None:
                                elapsed_s = int(resp['data'])

                    elif resp.get('event') == 'property-change' and resp['id'] == 2:
                        volume_level = int(resp['data'])

                    if(volume_level and volume_level != g.volume):
                        g.volume = volume_level
                    if elapsed_s:
                        self.make_status_line(elapsed_s, prefix, songlength,

So that should do it. If you have run mpsyt once prior, we need to remove the cache file:

rm ~/.config/mps-youtube/cache_py_*

Now you should be able to fire up mpsyt and view/listen to your heart's content. Take note of the fact that you may need to set a few options to non-defaults. And then to view a video (example is mine on RPM creation):

To enable non-music hits in your search queries:

set search_music False

To query:

/fedora redhat rpm creation basics

To narrow things down by user:

user theschotty

To play a specific hit:



After trying to recall the exact way I used to manipulate a bunch of stuff that was in numerous subdirectories that I wanted to rename and put into ONE folder for its category (photos), I figured for posterity I would post the rough scheme here. Plus anyone who wants to modify it for their own needs, it's there now.

  • move all files in subdirectories to the root folder
find ./ -name '*' -exec mv -v {} ./ \;
  • rename them all stripping a string and replacing it with another
for i in *OLDSTRING*; do mv "$i" "${i/*OLDSTRING/NEWSTRING}"; done


I created a simple script that will allow for creating for all installed kernels, the DKMS module(s).

Here is a sanitized version:


#Module name

for KERNEL_LIST in /boot/vmlinuz-5*

The module name and version can be found in /var/lib/. The subdirectory will be the module name, and inside will be the various versions present.

For example:

# pwd
# ls
2.8.0                                  kernel-5.10.15-200.fc33.x86_64-x86_64
2.9.0                                  kernel-5.10.16-200.fc33.x86_64-x86_64
kernel-5.10.10-200.fc33.x86_64-x86_64  kernel-5.10.18-200.fc33.x86_64-x86_64
kernel-5.10.11-200.fc33.x86_64-x86_64  kernel-5.8.14-200.fc32.x86_64-x86_64
kernel-5.10.12-200.fc33.x86_64-x86_64  kernel-5.8.15-201.fc32.x86_64-x86_64
kernel-5.10.13-200.fc33.x86_64-x86_64  kernel-5.8.16-200.fc32.x86_64-x86_64


Getting AMDVLK on Fedora 33 (or F32 for that matter) is not difficult, but is not as straightforward as it used to be.

Firstly, you will need to add in the copr repo from one of the main devs so the package is present. After that, you will need to do the not so obvious part -- set the default ICD, as autoselection for whatever reason gets broken.

    sudo dnf copr enable tkov/amdvlk
    sudo dnf install amdvlk-vulkan-driver

Pick a Vulkan driver, mesa

    echo export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json >> ~/.bashrc


    echo VK_ICD_FILENAMES=/usr/share/vulkan/implicit_layer.d/amd_icd.x86_64.json >> ~/.bashrc

Thats it. If you dont force the other, your preferred Vulkan driver will be used. Forcing is as simple as:

    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd.x86_64.json appname
    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json appname

Or for Steam

    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd.x86_64.json %command%
    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json %command%

Not hard, but not the most straightforward. If you are interested in seeing who provided your driver:

    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd.x86_64.json vulkaninfo | grep -e "GPU id"
    VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json vulkaninfo | grep -e "GPU id"

The output will say if you are using RADV (mesa) or not (AMDVLK). Here is a snippet of what happens with my Rx590 when queried as such:

$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd.x86_64.json vulkaninfo | grep -e "GPU id"
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
        GPU id = 0 (Radeon RX 590 Series)
GPU id : 0 (Radeon RX 590 Series):

$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json vulkaninfo | grep -e "GPU id"
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))
        GPU id = 0 (AMD RADV POLARIS10 (ACO))

I hope this is of some help for anyone interested in using AMDVLK for games that actually benefit from it (Path of Exile). That said, most titles are just fine with RADV, and its edge cases that need or have a notable performance gain with going AMDVLK at the moment. But it is nice to have options.


So you wish to replicate your pip userinstall on another or new machine. Simple! On your machine that't got everything to be replicated:

    pip freeze -U > pip-userinstalls.txt

Then you can import that file in the following fashion:

    pip install -U -r pip-userinstalls.txt

Thats it! Take note though, that you may need some systemwide packages from your repo(s). In most of my cases I did.


Getting this to work was not the difficult part -- figuring it out was. Here is what you need to do.

First you will need to head on over to the download page and pick the Bluetooth USB Adapter, then download the Linux driver.

Next, unzip the contents and :

sudo cp mpow_BH519A_driver+for+Linux/20201202_LINUX_BT_DRIVER/rtkbt-firmware/lib/firmware/rtl8761bu_fw /usr/lib/firmware/rtl_bt/8761b_fw.bin
sudo chown root:root /usr/lib/firmware/rtl_bt/8761b_fw.bin
sudo chmod 644 /usr/lib/firmware/rtl_bt/8761b_fw.bin

Then finally you can insert the usb device into your computer and start connecting BT devices.


Well, mostly for me to remember, but there is a quick and dirty way to update all your pip userinstalls :

pip freeze --user | cut -d'=' -f1 | xargs pip install --user -U

Thats it. This will update just your userinstalls and leave the systemwide stuff alone. The latter is important as mucking around with systemwide installations can include those from your packages. Breakage WILL occur. Learnt that via a playground VM a while back.


I finally ironed out why I have been having a nasty screen tearing issue in i3 -- it was Firefox. I noticed it was only Firefox, and searched to come up with the about:config parameter.

layers.acceleration.force-enabled = true

Fixed the parameter to the above, and no more tearing. Although, at least recently, for Ubuntu folks, there have been a need in some cases for more parameters. But on F33 + Xorg + i3-gaps I haven't needed anything more. Perhaps an issue related to the build environment or libraries -- don't know for certain. But in my case this bug has been squashed!


I finally collated all the images for WoW Classic into its own section. Depending on how Blizzard decides to handle doing TBC Classic, I will add or modify this accordingly. But as of now, there are:

  • Flight points and their faction connections
  • Levelling Talent Builds
  • Personal Talent Builds

If you wish to contribute, contact me and I can add the tree and any associated notes. Suggestions for additional content are welcome here as well. Future plans do include farming spots, noteworthy locations, noteworthy gear, and dugeon/raid related information.

World of Warcraft Classic Documentation

2021-01-09 PYTHON MENUS & ROFI

So I decided for giggles to create an old school C64/Atari era disk menu for a few terminal apps I am constantly using. That took me a half hour or so to figure out and get working. Why not use rofi? Well, rofi had a coniption since a lib a bunch of my application use couldn't see the terminfo from Alacritty. Grr. Long story short -- "alacritty --hold -e command" is your friend. Once I did that, I was able to determine the problem and work around things via rofi and even got super lazy and made a i3 keybind ("$mod+Ctrl+Enter alacritty -e").

So how did I make the menu? There's a really slick python lib, curses-menu, that with really just a few lines of code, slaps a menu together for you. Feed it a title, entries, what to do with each entry, done. In my case its a whopping 23 lines to run one of 6 applications.

And there's technically nothing stopping you from using this as a shell for managing a podman user container(s). I did something similar with a few game servers, the management shell was the login shell for the docker user that the container started up in.

Could also, now that my brain is busy working usefully again, make a menu for common ssl clients. Or go full on and use this as a CLI based Remmina clone for initiating ssh, rdp, or spice remote connections.

Damn, this ain't gonna stay 23 lines for long .... But far more useful.


Here is a quick and dirty script to handle getting the expiration dates of your servers' SSL certificates. Edit the hostnames to reflect your intended targets.


echo -e '\\' | \
  xargs -n 1 bash -c ' \
    openssl s_client -connect $0:443 2> /dev/null | \
    openssl x509 -noout -enddate | \
    cut -d = -f 2 | \
    xargs -I {} echo {} $0 '

This will output:

# ./
Feb  2 14:34:42 2021 GMT
Aug  2 12:00:00 2021 GMT
Mar  6 12:00:00 2021 GMT

2020 POSTS

2020-12-22 KEXEC.SH

OK, I got reminded to share, and not Bogart the very nice kexec script. Here is the contents of what I am using and a link to what I think is my source. It has been a few years now, so forgiveness please!

# Force root
[ `whoami` = root ] || { sudo "$0" "$@"; exit $?; }
latestkernel=`ls -t /boot/vmlinuz-* | sed "s/\/boot\/vmlinuz-//g" | head -n1`
echo "kernel current: $(uname -r)"
echo "kernel target:  ${latestkernel}"
echo ""
echo "Arming kexec..."
kexec -l /boot/vmlinuz-${latestkernel} --initrd=/boot/initramfs-${latestkernel}.img --reuse-cmdline
echo ""
read -p "Press [Enter] key to start new kernel..."
kexec -e

And here is the link to what I do believe is the appropriate credit to my script, Pawel Szaga's homepage:


2020-12-22 I3-GAPS

As I have been absolutely addicted to i3, it's only natural to have wandered over to some of the other tiling wm's and that leads to the minor fork of i3 -- i3-gaps.

All i3-gaps adds is ... GAPS! Yep, gaps between the windows. That's it.

The thing is -- it really adds a lot of cleanliness and very clean and clear delineation between the various windows.

Here is a screenshot of me in the middle of making this post just prior to a kexec reboot, and showing Firefox on another screen.


i3-gaps copr repo

2020-11-21 FEDORA 33 UPGRADE

The upgrade went smoothly. Used dnf to update using the system-upgrade plugin. All I needed to do beforehand was fix my openrazer repo from 32 to 33. I did do some package culling, but none of it was necessary. As this culling happened after I booted into F33. The one thing that was annoying was I did have to reinstall a few python userinstalls.

The quick and dirty. First update system and reboot:

sudo dnf upgrade --refresh
sudo systemctl reboot

Next, pull in the updated packages and reboot to finish upgrade.

sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --refresh --releasever=33
sudo dnf system-upgrade reboot


Just discovered two new native tools that will help manage and update your addons. Updated in the Battle.Net + Wine page. Both are AppImages, so download them to your system somewhere, mark them as executable, and run!


So, if you have been following my advice of segregating the data from your wine prefix, you may be bitten by this bug in Blizzard's code that only affects GNU/Linux and MacOS users on Wine. The code has a fit when crossing FS types (NTFS causes issues) and hates symlinks.

So there are a few ways to fix this. Firstly, ensure that you are on a filesystem native to your OS.

Next you have a few options for resolving the symlink problem. You can either go into winecfg for said prefix and map a drive letter to the parent folder hosting your game data (so make a "G:\" point to "~/path/to/Blizzard_Games"), or just point to it within the BNet client itself (usually "Z:\" is mapped to "/"). I went with the former on several prefixes and it worked universally. But ensure that you remove your symlinks so that doesn't cause grief.


So in a multi-monitor environment, there is the likelihood that your physical monitor layout is not what the GDM's layout is. This can be solved rather simply via GNOME3 and a copy of a file.

So to fix this, log into a user that has sudo rights. Go into GNOME's monitor setup and get it the way you want. Once it is setup, log out, and back in to verify things got saved. If so execute the following command:

sudo cp ~/.config/monitors.xml /var/lib/gdm/.config

Now if you either reboot

sudo systemctl reboot

or restart GDM you should have the layout fixed.

sudo systemctl restart gdm.service

Note that in the latter case, you will lose whatever session you are logged into via GDM (the whole child process thing). Just a word of caution :)

2020-09-12 GIVING i3 A WHIRL

I finally spent an afternoon screwing with configs, and I think it was worthwhile.

i3 in and of itself is not that complicated, but what was somewhat a PITA was tieing all the extras that I have grown used to in GNOME in. I am currently using i3bar and i3status for my top bar. Made a few tweaks to the color scheme. Not that the stock one was bad, per se, but not what I am used to looking at. Sofar in the 5 hours or so, I am pretty much used to the keybinds. So my one fear was accurate - time burnt. But was not in vain.

Eventually when I get everything ironed out, I do plan on a proper guide on at least getting started and a nudge in the proper direction on full-on personalization of the environment as well as a full demo of what I chose to achieve a few tasks that are not stock to i3.

Now, on to the quick and dirty:

  1. Print out the i3 Reference Card or have it handy. This will make things alot easier going forward.
  2. sudo dnf install i3 i3status dmenu i3lock feh
  3. relog and make sure to select i3 as your WM
  4. There should be a quick setup tool that pops up when you login. The only thing you will need to do is pick the Windows/Super or Alt key to be your special key for keyboard commands. I personally prefer the Windows/Super key.
  5. Fire up your favorite editor (if you are unaware, MOD+D opens up on the top bar a run command) and edit ~/.config/i3/config to modify i3, and feel free to reference the i3 manual and find where it details anything you can think of and make the edit. It is advised to modify (towards the end of the config) the i3bar i3status parameter to be "status_command i3status --config ~/.config/i3status/config" so you can make edits to the top bar (i3status) next. To reload the UI it is MOD+Shift+R to reload. Your apps will not die; this is akin to GNOME3's Alt+F2, r, enter combo.
  6. Edit ~/.config/i3status/config (should be a new file) and start with the sample config from the i3status manpage.
  7. Make changes to the i3 & i3status configs as you find things to fix/change/add!

I personally found that deciding what I wanted was the trick. I did add a few custom keybinds, a few lines for the multi-screen setup I am rocking, and finally paring down and fixing the i3status conf from the manpage. Once I get around to putting things together I will have my configs which hopefully will show you how to do anything that isn't blatantly obvious that you may want. But, seriously, %99 of what I wanted to figure out was straight from the manpages. Where I did have to look elsewhere, was for screenshotting things. I ended up using pip to install escotum to handle this as scrot was broken in the F32 repos at the time of my setup and writing this post.


So, you are thru with a container, and the darn thing wont delete. If you run into an issue as such:

# docker rmi -f 19ffa37f5545
Error: error removing containers [ba2b8667e9f5acbf9eb1001110f868a641eccbbd21f08588373aae095d518055] for image "19ffa37f554577b753067988f5ba902568a4310d1a8c3732a2d4083dfebc1605": could not remove container "ba2b8667e9f5acbf9eb1001110f868a641eccbbd21f08588373aae095d518055": unlinkat /var/lib/containers/storage/overlay/61addcf2552f0ee1f5a5434bd021e1e4c5446047dab8173c00e486d57604ffb9/merged: device or resource busy

The resolution will amaze you at how elusive yet simple it is. Long story short -- you indeed have a hung process that is hanging on to the file, making it impossible to remove. So we need to find that process or processes and kill them. So in the above example we see that there is a specific file that is being referenced. Lets look at whats using it:

# grep -l 61addcf2552f0ee1f5a5 /proc/*/mountinfo
# kill -9 9986
# docker rmi -f 19ffa37f5545
Deleted: 19ffa37f554577b753067988f5ba902568a4310d1a8c3732a2d4083dfebc1605

Done. In this particular example, I had about a dozen processes all hung on said file. This is the fix. I would look into what file is keeping it locked by a simple :

# ps -f 9986
root      9986     1  0 13:29 ?        Ss     0:00 /usr/libexec/bluetooth/bluetoothd

Sometimes a container wants more than it should. Another reason I consider people who disable SELinux and those who do not use it with their containers fools. Why does this container want access to bluetooth? In this case it is a media application, so somewhat sane, but only somewhat. Thankfully SELinux had a complete fit, and also gave me a heads up that this particlar image may be a fun one. And it was.

A cause I have noticed on EL7 hosts happens to be with systemD unitfiles. A misconfigured unitfile can leave things in a slight mess. If you miscreate the unitfile, you may be better off using cron to start up containers on boot. So either learn to create the unitfile correctly, use podman and let it handle it, or just use cron. And yes, cron can be told to start things on boot.


I have been playing around alot lately with flatpak and python and quite liking the fact I can install certain applications and tools without having to redo them (yeah the RPM reinstall trick does help there, but still ...). Now for those that are unaware, just like rpms, normal system-wide python pip installs will go away if you clean reinstall. But like flatpaks, pip installs into the user's home directory do linger. To achieve this its actually simple, and only needs one thing above and beyond done.

Firstly, a modification to your bash_profile will need to be done. Edit ~/.bash_profile and add at the end of your PATH :$HOME/.local/bin if it is not already there (it was for me)


Secondly its just a matter of using pip with the user flag set:

    pip3 install --user simple-timebox
    pip3 list --user

When removing a package, you do not add the --user flag, pip will ask and start with user, then hitup the system-wide one.


The transition went smooth once I realized I was a moron. I forgot that if one enables SELinux, make sure that any OCI tool is told about it. That and a few issues with getting the systemd unitfiles done up correctly. That said, very happy with the results. Sofar on my personal server I have everything migrated. Next step is to rebuild in podman when I migrate over to EL8 on that system. Eventually I will have a cheatsheet or a guide on podman slapped up, but until then, its really not much different than replacing the docker command with podman. But doing so does open up a good number of possibilities such as rootless containers. Podman gets the official "Schotty Seal of Approval".

For those interested in what I have done, I migrated from the startup scripts where appropriate. Things that are not appropriate are where I have a boatload of things that need to be done prior to starting the container, such as SSL certs. But Jellyfin, Minecraft, CSGO are all good. For example the following generic ExecStart command should be mutatable to meet your needs if you run into any oddball issues. Note, that I am combining a few things that were normally separated out from my startup scripts into the podman run command, such as removal of the container when done, so a stop/start works. The normal unitfile location is /etc/systemd/system/unitname.service

    Description=CONTAINERNAME Podman container
    ExecStart=/bin/podman run --rm --name=CONTAINERNAME --privileged -p 443:443 -v /volume1/:/1:z CONTAINERPROVIDER/CONTAINERNAME:latest
    ExecStop=/usr/bin/podman stop CONTAINERNAME

Then all one needs to do is:

    systemctl daemon-reload
    systemctl enable unitname
    systemctl start unitname
    systemctl status -l unitname

Done! Feel free to buzz me for any particular container to use as the base for the podman + systemd tutorial. Otherwise its going to be a boring and easy one like ... MkDocs or mumble.

2020-04-22 SITE UPDATE

I have upgraded the theme (material) from the 4.x tree to the 5.x tree. The mkdocs.yml file needed a wee bit of reworking. So bear with me as I hunt down changes that are incomplete. Sofar only a few things are left, and should be taken care of within the next week.

2020-03-12 SSHFS + FSTAB

SSHFS is potentially the most useful thing that *BSD & GNU/Linux offer me that makes using Windows nearly impossible. It allows for mounting of a remote filesystem via ssh.

Inside a standard display manager such as KDE or GNOME is rather simple, but what about via fstab? Not intuitive, but easy nonetheless.

You will need to know 3 things, and have setup keyless logins on the remote filesystem you wish to mount. You will need to know:

  • Remote location to mount.
  • Your local userid number
  • Your local groupid number

To find the local userid number and groupid nuber, you can use your distro's GUI tool for managing users, or via the CLI as follows:

    $ grep andrew /etc/passwd
    andrew:x:1000:100:Andrew Schott:/home/andrew:/bin/bash

In this case (on OpenSUSE Tumbleweed), the UID is 1000, and GID is 100.

To actually mount the filesystem, edit the /etc/fstab file to have the following line, with the appropriate fileds fixed with your information:

    andrew@server_ip_or_hostname:/home/andrew/ /home/andrew/mnt/servername/ fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,identityfile=/home/andrew/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=100 0 0

Next we will need to create the mount point if it does not already exist:

    mkdir -p /path/to/desired/mount/point

Then all we need to do to activate this new mount:

    sudo mount -a

Barring any typos, you should have the mount active at the mount point!

2020-03-05 -- EL7: PYTHON 2.7 & SETUPTOOLS ISSUE


There is a new issue thanks to a choice by upstream python devs to deprecate python2, that will potentially cause issues with users of any system using python2 by default, such as EL7. Doing, for example, a "yum update" will yield:

/usr/lib/python2.7/site-packages/pkg_resources/ UserWarning: Setuptools will stop working on Python 2
You are running Setuptools on Python 2, which is no longer
supported and
in a subsequent release (no sooner than 2020-04-20).
Please ensure you are installing
Setuptools using pip 9.x or later or pin to `setuptools<45`
in your environment.
If you have done those things and are still encountering
this message, please comment in
about the steps that led to this unsupported combination.

Not kosher.


So the fix is to do the following to ensure that this doesn't recur:

    sudo pip2 install --upgrade --force-reinstall setuptools==44


2020-03-05 -- SITE UPDATE

  • Updated mkDocs
  • Updated mkDocs-material theme
  • Since the cumulative updates fixed some mobile issues, now I have re-enabled the table of contents for the blog, making links work again (YAY!).

I have to give a very vocal thanks to the mkDocs team. As they have made getting sites off of Wordpress and Drupal a breeze, albeit with a bit of work rejiggering a few things around to get them just so. But thanks to mkDocs, I have a blog and docs site that is blazing fast, been blazing fast for 5 years give or take, and is virtually hack-proof (I'm sure theres a vulnerability somewhere). But with the ability to not need anything beyond an httpd daemon, and a few python modules, the site is about as lean as one can reasonably get.

Thats only possible with a static site generator like mkDocs. (Honorable mention to Jekyll and Hugo)

If there is any interest in how this is done on my end, feel free to hit me up and I can make a page on how to do a site similar to what I have here.


Well for the umpteenth time in the last couple years, the GNOME3 lockscreen went awol on me. Super+L didn't work, nor did any of the myriad of xset commands, nor did a few reboots. I decided to dig around and found two gsettings commands that either or both are needed to fix things. Although I think the first one was all that was needed. I also think that a performance tool such as Feral's GameMode is the culprit each time. I will investigate and update this post accordingly if there is any further notes regarding this issue.

    gsettings set org.gnome.desktop.lockdown disable-lock-screen 'false'
    settings set org.gnome.desktop.screensaver lock-enabled true

2020-02-22 -- FIREFOX CARET MODE

I didn't know this was a thing until I searched for a solution to the mysterious cursor on all videos in Firefox. Turns out, this mode is the problem. Solution was simple:

  1. Enter about:config into the URL bar. Accept responsibilities for your actions.
  2. Search for "accessibility.browsewithcaret". And set it to false.
  3. Same for "accessibility.browsewithcaret_shortcut.enabled", which also needs to be set to false.

Thats it. Figured I would share, since this did annoy me to no end, forcing me to DDG a solution.

2020-02-20 -- BASH ROOT TIP

I have this in a few of my scripts scattered about here (yeah, need to clean up the scripts most likely), but figured I would blatantly post it here (ctrl-f magic).

So if you have a bash script that somewhere needs root permissions (as the chum I assisted was dealing with some SSL certificates that needed importing into a container -- thats root), all you need to do is the following:

    [ `whoami` = root ] || { sudo "$0" "$@"; exit $?; }

Thats it, thats what needs to be up top. This does, however, make a hard dependency on sudo, but, frankly I have that on EVERY system anyway. I mean every system.

Happy hacking!


Cool new browser plugin for removing the mainstream media links in YouTube is available here.

The addon is amazing!


I have recently procured a new USB o-scope, a Hantek 6022BL. I can say, after having compiled OpenHantek6022, I love this thing. Good for basic hobby stuff up to troubleshooting real stuff. I bought this in an attempt to avoid dropping real cash on a Rigol 1054z and unlocking it all the way to the top end via the Rigol Key Generator

The OpenHantek software works as I would expect. No issues with the 6022, as that family is well supported (reason I bought it). Opensource FTW!


Apparently since Fedora 29, depending on how you installed things, the new GRUB2 behavior regarding the seamless boot has been deployed.

Nice thing, it works quite nicely.

Bad thing, it means no menu in %99 of the situations post-EFI or post-BIOS, and straight into the default GRUB2 boot target. Meaning, making a kernel flag change (different runlevel, tweak a kmod parameter, etc) is impossible --- OR IS IT???

In the link below, there is a number of steps to get around this. Simply put, on all systems that have one of the following situations occur, the menu will be displayed as one would expect it to as to how the grub config states:

  • Unclean shutdown
  • You hammer the shift or F8 key at BIOS/EFI logo screen
  • You press ESC at the right magical moment (presumably while riding a unicorn)
  • The grub parameter has been removed (details on that later)

This is fine and all, but took me a while to dig up, and that was mainly thanks to someone posting it on Reddit. Here is a quick cheat sheet on what you need to do to get an old style grub menu again:

    sudo grub2-editenv - unset menu_auto_hide
    sudo grub2-mkconfig -o /etc/grub2-efi.cfg ## For EFI
    sudo grub2-mkconfig -o /etc/grub2.cfg ## For BIOS



Not sure how far back this applies but apparently alot of changes behind the scenes have been occuring that I have been oblivious to.

One of which is a massive simplification of getting Firefox to like various websites that need external codecs.

    sudo dnf install ffmpeg-libs

Thats it. Restart Firefox if need be. Any site that needs a codec to work should. Obvious exceptions are DRM laden garbage. But even still, alot of that garbage still will work (usually due to baked in support thru the browser)

2019 POSTS

2019-10-26 -- LUXTORPEDA

Discovered a very slick way of integrating native GNU/Linux ports of games into Steam where they normally wouldn't exist, such as GZDoom for DooM (1993), Yamagi Quake II for Quake II, etc.

The process is rather ingenious -- add the Luxtorpeda compatibility layer into Steam and force the game to use that. Voila, done!

This works for:

Quick Installation, from above links:

  • Quit steam

  • Enter in the following

    cd ~/.local/share/Steam/compatibilitytools.d/ || cd ~/.steam/root/compatibilitytools.d/
    curl -L | tar xJf -
    curl -L | tar xJf -
    curl -L | tar xJf -
  • Start steam, and force the game to use appropriate compatibility layer. Each repsective tool has the compatibility list on their github page.

2019-10-20 -- ADDED SRD5e

Added the AD&D 5e SRD data to my site. I used the data from a git project that converted all the SRD material to markdown.


2019-08-19 -- TMPFILES.D TIP

OpenSuSE for whatever reason doesn't have a default /tmp clear on reboot. So to make this happen, create a file:

    sudo vim /etc/tmpfiles.d/clear-tmp.conf

And plop this into it on the first line:

    R /tmp/*

After rebooting, anything in /tmp should be nuked. Hope this helps anyone looking to get this issue sorted out.


Sent in a ticket a few months back and got nothing from the Simplify3D team that was in the slightest bit useful. After digging around I decided to start fresh. There is a persistent bug that kept nagging me -- no matter what I did, there seemed to be an SSL comms issue that S3D couldn't deal with and would insta-fail on contacting the authentication servers.

After some further digging I almost gave up, but then rather than being generic about the issue, I DuckDuckGo'ed the same string with OpenSuSE in there too. Voila!

The fix is simple -- the SSL cert is named and located somewhere else. So....

     sudo ln -s /var/lib/ca-certificates/ca-bundle.pem /etc/ssl/cert.pem

Thats it. If need be you may after a fresh install, need to run the script, as this will fix any permissions issues. Then all you need to do is run the script and you should see a login screen. After logging in you should have the wonderful S3D GUI pop up.

Now that it seems CentOS8 should be dropping soon, I may be moving back there from Tumbleweed, but eh. Why fix what isn't broken? Things sofar have been rather simple. Aside from this and a few oddball scripts that were VERY RH centric, no issues. Well aside from the identical problem RHEL/Fedora/AnythingNotUbuntu seems to have with Last Epoch not working for sh!t... But that isn't SuSE's problem :)



Well I am reserved and planning on making Grobbulus (RP-PVP) my Classic WoW home. Hope to see all of you there! FOR THE HORDE!

Schotty's Grobbulus Toons


  • Finally got off my duff and setup a matrix server. Connection details are in the hamburger menu or in the lefthand menu. Using synapse for the backend homeserver and for the client. Recommend Riot as it supports video conferences, which are currently setup to replace mumble/discord/teamspeak voice channels.

  • The amdgpu + Fedora page has been updated. I have been dealing with a weird dpms bug in every DE/WM that when you lock the screen or manually tell the screens to sleep, they wake up ~5s later, and after an hour or so cause the system to hard lock. After several weeks of in depth analysis, I found that (sofar a week strong) adding the kernel flag of 'amdgpu.dc=0' to disable the DisplayCore patches. There are reprocussions, but none matter to me (DisplaySync being one of them as well as some things such as audio over hdmi). Sadly the page is sparse on useful information for this at this time. But does have some useful things, albeit a bit awkwardly setup for normies like us. The FDO page linked has the entire kernel parameter list, how to manipulate, and what you are manipulating. I suppose if you do find you need to disable the DC code as I have, you may want to see here if there might be something that will break and then at least you could weigh the pros/cons of usage/non-usage of the DC code. My attitude right now is to disable it and periodically test to see if a kernel has fixed the issues with DPMS or not prior to removing the disable flag from grub.

  • Expanding the 3D printing stuff that has been lurking in the shadows, not hidden, but not directly linked from anywhere in My clone prebuild CR10 needs to be rebuilt and I frankly haven't had the time. Only super small prints come out ok, larger prints than a teacup saucer (actually not even that large) in the x/y axis fail, and anything larger than 2" fail hard in the z axis. Well, I splurged and picked up a Lulzbot Mini 2 and it is immaculate. Worth the money to have a working printer out of the box. And it plays perfectly with OctoPrint (via an OctoPi image on a Pi3B). Only beef I have is lackluster mounting options for a camera and light bar. But I have managed :D As such, I will be doing writeups and stl hosting of anything I design, and creating links to Thingiverse on cool stuff I printed designed by someone else. I do have a few cool ones already, just need to make pics and a dedicated page. The latter here will be easy thanks to mkdocs being a breeze to setup things.

  • Lastly, I would love anyone that has the new Valve Index to give me a hollar one way or the other to let me know how its panned out. If you have a review already up, I can share a link to it here once I have made a decision on whether to fork over the cash or not for a set (thinking Schotty Jr may want one, so its $2k to get one in my hands without guilt).

Phew. Alot here. That'll teach me to neglect the blog.... Or not :D

2019-03-21 -- AMDGPU USER NOW

Replaced my NVIDIA with a Radeon RX590. I now understand fully why folks are saying go team red. The setup is the most complicated with the 590 as of right now, and this was far simpler than most other things -- ensure mesa is there, ensure vulkan is there, and make the grub command include an amdgpu force.

I have detailed what was needed in a new guide

2019-02-08 -- SITE REDESIGN

Well, I had to clean the menus up. The docs are now all in a single page and can be accessed via the "Documentation" link above. Still working on the front page not fitting by defult properly on my phone. But thats another battle.

The Documentation page is generated with a script that goes thru all the docs/ folders minus an exclude list (needed to for at least the images directory) and creates the headings and markdown links for me, and is run prior to my deployment script. Nice thing, I can have it point at my markdown files and mkdocs fixes the URL appropriately to the corresponding html page! Of course, I found this out after doing the legwork for converting the link target to an html page ... Never needed that.

Here is the script should anyone like to do something similar.


# Some variables to setup the working environment and what not to dig into. Run in scripts directory or reprogram the variable to point to where docs/ is.
exclude=("img/" "Services/")

# Zero out the new link file
[ -e $link_file ] && rm $link_file
exec &> $link_file

# Recursively go thru the site looking for .md files to create a list and markdown format link.
cd "$sitedir"

for category in $(ls -d */); do

  if [[ ! " ${exclude[@]} " =~ " ${category} " ]]; then
    category_title="${category//_/ }"
    echo -e "# **"${category_title%/}"**"
    for filename in $(ls "$category"*.md); do
    # Strip slash from filename        

    # Strip .md

    # Change underscore to space
        link_text="${link_text//_/ }"

    echo -e "* ["$link_text"]("$filename")"


Yep, the title says it all -- I am back to using OpenBSD again, after a really long time (think 4.5 was the last release I touched...). Expect some guides, primarily on how to do things that have little analog to how Red Hat does things, much less GNU/Linux in general.

Planned topics are things that I had to revisit the OBSD docs for and include:

  • Setting up ports
  • Package management
  • Kernel manipulation (this is a big difference from GNU/Linux)
  • Updating the base system (again different from GNU/Linux)

I am currently using 6.4 on one system, my trust old eeePC 10 incher. I do plan on putting this on ALL my older systems, as a way to breathe more life into them, force my self to use the hardware laying around or get rid of it, and most importantly to reacquaint myself with OpenBSD. I do miss the good ole' days of using OBSD on all my servers and edge devices, and I look forward to seeing how OBSD fares compared to RHEL in a number of areas. Including:

  • Virtualization
  • NFS
  • HTTP
  • Identity management
  • Network gateway

Anyway, off to poking with my new toy! Updates and guides will be inbound. I will create a new OpenBSD section for them. Thinking that the final menu structure will end up being:

  1. RHEL & Fedora
  2. GNU/Linux
  3. OpenBSD
  4. Wine
  5. Cheatsheets
  6. Services

2019-02-06 -- sshuttle

Found a really slick and simple vpn that uses ssh to handle all the routing - sshuttle

All you need is shell access to the remote system and you are golden. To use, install the sshuttle package.

  • EL7

    sudo yum install sshuttle
  • Fedora

    sudo dnf install sshuttle

Then all you need to do is the following command:

    $ sshuttle --dns -r user@remote-host 0/0



No particular preference as to what is more important, just a big ole pile of things done, being done, and will be done.

  • Removed anything related to the Linux Counter, as the project has died at the beginning of Dec 2018. Will re-add if there is a revival in the project
  • Overhauled the MikroTik RouterOS page. Got my butt in gear starting the automation section of the HTTP TLS certificate generation, completing the self-singed manual method. Automated solutions involving LetsEncrypt have existed for a little while now, and I will likely use that and phrase it so using another reputable CA vendor is trivial.
  • Added a Terraria dedicated server
  • Re-Going over anything DXVK related, some things are still valid, others not. Specifically Path of Exile and BattleNet. Generally speaking, anything wine related is best served via Steam Play (Proton) or Lutris (both of the aformentioned work perfectly in Lutris with the DXVK .94 and tkg-3.21 wine staging build). Simply put, when things are hard, the automation they provide are wonderful and when they are easy its really easy.
  • Rebuilding the CSGO server script. Its a little clunky, and is missing a few game modes. Plus it would be nice (see if I get there anytime soon) to have the ability to do a one-off map load and if it works out save it as another game mode.

2018 POSTS


  • Added a Wine+Twitch page
  • Cleaned up Wine+Path Of Exile page
  • Added LVM Cache notes to the LVM Cheatsheet.

Feel free to plug any ideas that would warrant a good writeup.

New on the itinerary would be mailcow, as it seems another viable alternative to GMail and a good option if not interested in using MailInABox. Plus it is INTENDED to be used as a set of docker containers. So if one's workflow is doable %100 inside of docker, this is a great option. I do fall in that category at home, and can deploy all services via docker on all my servers (personal and managed). So this is an interesting topic.

Along the docker line, I am keen on getting my feet wet on Fedora Modular server. So I will be looking to spare time to play with that and see if it can handle the beating it will need to endure to replace my RHEL7 infrastructure at home.

2018-05-19 -- NEW PAGES

Added a few pages:

  • Git SSH repo
  • Oracle VirtualBox Cheatsheet
  • Ubuntu Tips & Tricks


Cleaned up.

Main changes:

  • Removed outdated (or soon to be) information
  • Blog is now landing page
  • All site resources are together


  • Testing internally combining pages together, and using the Table Of Contents feature to be the subsection selector.
  • Paid services section

Goal is nearly met -- simplification to the point I no longer have to tell anyone ever where something is. I am hoping that I can get away with "Red Hat Products", "General Linux", and "Wine" to be it for the entirety, with room for "BSD & Others" a possibility. Again the internal testing may make this moot, as its just a TOC entry. One issue I have found is the various themes for mkDocs handle the TOC differently, so I may have some extra leg-work ahead on this one. Thats what programmers are for :D


Reorganized the site so the categories are less, and allows for more distinct categories present. Site information eventually will be cleaned up and become the one page, and the blog will be the landing page. That will not happen today, but the ball has begun.

2018-05-06 -- SITE UPDATES

Uploaded a large number of new writeups, from general linuxy things, to dockerizing Factorio, to using xmrig to mine monero!


The latest update (v.25) from 15 NOV 2017 has some issues with updating z-push. The fix as of the last month or so has been to do a git pull that has a few workarounds. Here are the following steps to fix the issue. When run, you will need to re-answer a few questions (domain, IP, etc.) as the original answers are in the mailinabox_old folder now. Just answer them correctly, and you will be fine.

    sudo -i
    apt-get update
    apt-get dist-upgrade
    apt-get install git

    cd /root
    mv mailinabox mailinabox_old
    git clone
    cd mailinabox
    bash setup/
    bash setup/ # the first one might fail due to bug #1298, run it again to make it succeed

Here is a link to the thread that has this very fix

2017 POSTS


Sometimes the upgrade from F26->F27 breaks the GNOME3 lockscreen. Whatever the cause is, here is the proper fix:

    gsettings set org.gnome.desktop.lockdown disable-lock-screen false

2017-12-05 -- KSPLICE UPDATE

Loving it! Works great on my two Fedora 27 installs. Only downside is it doesn't appear to do NVIDIA modules :(


Ksplice, Oracle's kernel patch tool for avoiding reboots to take in kernel updates, is apparently available to Fedora and Ubuntu users, and free now. Not sure for how long, but it is now!

2017-11-20 -- DOMAIN UPDATES

Made a few changes to things:

  • Updated the site to also include a widget for Discord. This was easy, but Discord is still a secodary at best method of chat for us.
  • Working on widget for Mumble. Some php bugs to iron out still.
  • Working on getting things sanitized for public dissemenation on Gitlab & Github. Stay tuned for future announcements here. Mostly game server related.
  • Rewriting ALL of my docker scripts to be cleaner, more portable, and simpler to deploy. My current CSGO and Minecraft containers are on dockerhub. It takes some effort to make work, not unsurmountable, but more than it should, or want.
  • Some site documentation cleanup and reorganization. Debating further restructuring.

2017-09-07 -- YUM/DNF TIP

Ran into an update issue on my home server where for some oddball reason, some of the packages that had DRPMs weren't finding the DRPM and not falling back to the RPM. The simple fix thankfully wasn't too difficult to locate, and was in the RHEL7 documentaion.

What needs to be done is simply disabling for that update the presto yum plugin:

  • For EL6, EL7, & AMAZON LINUX

    sudo yum update --disableplugin=presto
  • For Fedora

    sudo dnf update --disableplugin=presto

2017-07-20 -- NEW PACKAGE : sndio

Added this package since no other published repo has it, and it was VERY easy to whip up. In EL7, FC25, and FC26 repos.

2017-07-20 -- FEDORA 25 & 26 REPOS

As title says, we have two new repos to correlate with the current Fedora releases. As usual, these two will be kept up with the few packages that are needed. Do not expect alot to be in here, as previously with older Fedora releases. All packages are here because nobody else is doing them, or doing them right.




I recently discovered a markdown error, that although worked, made for sloppy markdown, and hence I will classify them as errors. Slowly but surely going thru ALL my documentation and cleaning out the problem code.

My error? Blockcode. I was using the 3 tildes surrounding all code. An indent of 8 spaces works better, including in numbered lists better, and looks cleaner while editing.


Happy Fourth to my fellow Americans!

As for the news, I have been working on a complete overhaul of packages. Some packages can go, as more popular venues (EPEL, NUX) have them now. Others will likely go for other reasons. For example, one that sadly has already gone is Lutris. DooMsDaY is another fun one, as the new version 2.xx that has been recently released (amazing update), I cannot get it to package well (its got to do with dengine's weird build system). If there is no progress I will just leave DooMsDaY at the 1.x branch and keep it there, since it does work.

Very soon I will be un-advertising everywhere the EL6 and old Fedora repos, and focus only on the latest EL and Fedora going forward. Shortly after that I will push an update for the repo-release that will change the server it points to, as I am in progress of migrating to a new dedicated After some time I will remove all packages, sans the updated repo-release file, on the current server. I would suspect this "flip of the switch" shall occur around new years, as that should be enough time for me to finish all the repo cleanup, push, and allow others to catch up.

Also, I am working on gettting several engineering and science related packages going. But literally every single package is going to be a good deal of work to make functional. None of them have been simple or fast. Updates, going forward once I get them completed (if I can).


As everyone should know, I am a huge fan of Crossover, and the Codeweavers gang. But, the one thing that they seem to still have alot of work on is the whole Windows world migrating to x64. Wine has had alot of changes to help facilitate that, and to be fair, only a few things are missing, thanks to the Codeweavers team working their asses off.

But as all things open source, competition makes things quite interesting. Lutris actually has some scripts that will easily make everything I have tried work with only one fix (change the Wine version to 2.8 to workaround some incompatibilities). This is great. All my fellow penguins out there know that if you had an XP prefix, you were getting a nastygram at every Blizzard App launch that you will be S.O.L. very soon. Well this script gets things working in a Windows 7 x64 prefix.

I made a video on how to do a x64 install of Path of Exile in Crossover. I generally would prefer to push them, but as Lutris is so much more than just a pretty Wine wrapper (all things gaming in fact), I am debating internally of whether I should adopt both going forward (ESO is looking to be nearly fixed in Wine, but not CX yet, etc). I will look at how much I actually need Wine for as time goes on. Frankly its pretty much Blizzard titles, ESO, PoE. Maybe if I can be forced to care, FF14 (the game sucks hard in my opinion due to boring questing and needing to research out what each class is and does since they had to reinvent that wheel). But honestly, with Albion Online, Shroud of the Avatar, Minecraft, CSGO, and the upteen million (it seems) titles that are native, the whole heretic purchasing is all MMO now. Pretty nice and bad at the same time. One would have though the MMO side would have been the first... Oh well. On to more important things than pontification of the inane.

2017-05-24 -- WODIM

Wodim is a CLI based iso image writer that I found as a recommendation for RHEL7 server, since brasero is not included in any of the repos. Since, these days this seems kind of backwards, as the only burning I do is FOR servers ... I need something.

On RHEL/Fedora you can install wodim by:

  • RHEL 7

    sudo yum install wodim
  • Fedora

    sudo dnf install wodim
  • To list your recording devices:

    sudo wodim --devices
  • To record an iso (verify, 12x burn speed, eject when done):

    sudo wodim -v dev=/dev/xxx speed=12 -eject /path/to/desired.iso

2016 POSTS

2017-05-24 -- New site: MACvendors

Look up your MAC address vendor :D Quite handy when going thru my logs with about a dozen unknown MAC's on my LAN.


2016-09-27 -- ONEPLUS ONE WOES

Tales of reflashing without explicit GNU/Linux support

About a year ago I ran into some corruption issues with my OnePlus One and that issue rendered ADB to have a fit, as did OTA updates, USB mode, and fastboot. Tech support wanted me to use Windows to fix it via a remote desktop session. Needless to say I was not about to let them goad me into going Windows. Well this corruption was abosulutely annoying and I was short on time and willpower to devote much of either into a literal spare device.

Alas I did. Sorta. I figured since I just got this ironed out I would share the ever so pleasant experience in getting this nightmare sorted out. I installed 8.1 onto an old disk and got it up and running long enough to get the thing fixed. If you find yourself in the same boat,below is what you want to do.

1. Download and install the Samsung Drivers for Windows.
2. Reboot afterwards. And yes do reboot, its necessary.
3. Download and install the ADB Installer. Do not need to install the drivers, just ADB and fastboot.
4. Reboot just in case it is necessary. I did. Besides we all know Windows needs to be rebooted every 5min or so :D
5. Plug in your phone. Windows should ask about drivers, if not no biggie. If you do get the dialogue, you can cancel it.
6. Go into Device Manager and find the ADB heading -> The ADB device -> Right Click to the Update Driver Software -> Choose Browse my computer -> Choose Let Me Pick -> Show All Devices -> Have Disk -> Point to where the Samsung drivers were installed.
7. That should get things working again. Once you can copy stuff to the phone, you can reinstall your recovery and OS via fastboot and the recovery respectively.

Download links are in the forums. You need to grab the build and then the Windows package and instructions. The instructions will add a few details to what I have laid out, but same process.

In my case I went from a broken CyanogenMod 12.1 to OxygenOS 2.1.4. The process was then, once adb/fastboot was fixed, was:

  1. Run from an Administrator mode command prompt "fastboot oem unlock"
  2. Run the patch companion download's batch file to flash the recovery, AllInOne.bat and choose option 2.
  3. Reboot phone and then copy over the Bacon OxygenOS 2.1.4 zip to the phone if its not already there
  4. Reboot phone to recovery and do a cache and data wipe install the bacon zip.
  5. After you reboot into Oxygen and go thru the new device setup song and dance, enable developer mode (Settings -> 6. About Phone -> Tap Build Number a bunch of times until dev mode unlocks)
  6. Turn on ADB support (Settings -> Developer Options -> Usb Debugging

Now replug the phone into your Linux rig and you should see two partitions pop up, including the drivers partition. Run the ADB fix for linux shell script:

Pre script, as you can see the only device is my other phone:

    $ adb devices -l  
    List of devices attached
    5VT7N15A25000587 device usb:1-2 product:angler model:Nexus_6P device:angler

Post script, and it sees but can't do anything with the phone yet:

    $ '/run/media/andrew/OnePlus Drivers/'   
    android home is exist!  
    config adb ...  
    OK! You can use adb now!  
    $ adb devices -l  
    * daemon not running. starting it now on port 5037 *  
    * daemon started successfully *  
    List of devices attached  
    d6dea608 offline usb:1-1  
    5VT7N15A25000587 device usb:1-2 product:angler model:Nexus_6P device:angler

Accepted the connection on phone:

    $ adb devices -l  
    List of devices attached  
    d6dea608 device usb:1-1 product:bacon model:A0001 device:A0001  
    5VT7N15A25000587 device usb:1-2 product:angler model:Nexus_6P device:angler

Done. Working great now. Would have been nice to know what I needed to do to get this functional on Linux from jump street, as it would have saved me a good 4hrs of my time screwing around with this. I do firmly believe that there was an issue somwhere with an update to the recovery image. The image I have now is much nicer than the one from the factory. And there was a setting that was ticked in CM that allowed for recovery updates. Just that nothing worked. My first stab was to download and install the latest CM13 for bacon and use the recovery to install it. Nope, didn't work. Thats how I eventually stumbled across ADB and Fastboot being borked here. For safe keeping I did back up my recovery files partition so if things go wonky again I am not forced to deal with this level of fun again. And by fun, I mean 6 hours of pure pain of having to touch Windows and screw around with their miserable driver model. And 8.1 sucks golf balls thru a garden hose.

2015 POSTS


OK, put simply there are issues immediately due to SELinux in getting NetworkManager to connect up to your VPN properly. If you setup your connection and certificates as follows you will have no issues whatsoever connecting as any user.

1.Copy all your certificate files into ~/.cert

2.Check your SELinux context and validate it is appropriate:


You need to have something like this:

    $ pwd  
    $ ls -Z  
    -rw-r--r--. andrew andrew unconfined_u:object_r:home_cert_t:s0 andrew.crt  
    -rw-------. andrew andrew unconfined_u:object_r:home_cert_t:s0 andrew.key  
    -rw-r--r--. andrew andrew unconfined_u:object_r:home_cert_t:s0 ca.crt

3.If you need to reset the contexts, issue the following command as root:

    restorecon -R -v /home/$USERNAME/.cert

4.Create a NetworkManager VPN entry with your cert files from the ~/.cert folder.


Took me a few minutes to understand why the connection was barfing out. Once I noticed some SELinux alerts it dawned on me -- I never set the contexts. A quick DuckDuckGo showed me also, that there is a convenient location to dump all certificates into. Double win!

2015-08-08 -- CU

I learnt something new - cu

Inside the uucp package is a nifty tool that I just picked up on called cu. This is for serial connection management and it works beautifully, and simply. I had a few old machines that I needed to tap into via serial and a friend admin I was with recently mentioned her love of this command. So having a selectively great memory, I gave it a stab.

  1. First get uucp installed. I see that it comes from EPEL on RHEL7.

    $ yum info uucp  
    Loaded plugins: langpacks, nvidia, product-id, subscription-manager  
    Installed Packages  
    Name : uucp  
    Arch : x86_64  
    Version : 1.07  
    Release : 41.el7  
    Size : 2.7 M  
    Repo : installed  
    From repo : epel  
    Summary : A set of utilities for operations between systems  
    URL :  
    License : GPLv2+  
    Description : The uucp command copies files between systems. Uucp is primarily  
    : used by remote machines downloading and uploading email and news  
    : files to local machines.
  2. Secondly determine your connection parameters. I have a USB to serial hodgepodge of cabling and adapters that I tote around and stash in places useful. So in my case its /dev/ttyUSB0 for the device, and of course each connection has its flow control and bitrate and parity, etc... Know that all. In my case the devices preferred to speak 19200b, 8N1, FC Off (manuals say so). But being hasty I just slapped into the terminal:

    $ sudo cu -l /dev/ttyUSB0 -s 19200

And things just worked. For a full reference guide for various settings and such:

2015-08-04 -- RHEL7 + Intel 7260AC Wireless Card

There are known issues with older kernels that cause major issues with the 7260 with regards to power management and the 5GHz spectra. After dealing with a dying i7 IMC issue, I finally could spend time troubleshooting my issues.

Firstly, ensure your router/AP isn't crap. I had that issue regardless of devices and their respective OS's. Once you are sure that there isn't anything dead/dying or just plain flaky, there are a few things that can be done, one of which you have a potential choice as to how to deal with it. Supposedly kernels beyond 3.16/3.17 have this rectified. As we are pegged on EL7 to 3.10, until Red Hat backports the changes we have to deal with it ourselves.

Next, there are several lines we need to put into your /etc/modprobe.d/iwlwifi.conf

Here is how I went, and I will detail what each line means:

  • Not necessarily needed as of RHEL 7.3, newer iwl drivers have cleaned up alot of cuft and bugs. I have found that stock settings are perfectly fine now. Leaving this details present in case someone is locked to 7.0/7.1/7.2 and cannot update to a newer iwl release.

    $ cat /etc/modprobe.d/iwlwifi.conf  
    options iwlmvm power_scheme=1  
    options iwlwifi bt_coex_active=N swcrypto=1 11n_disable=8
  • The power_scheme option is to set the power to full bore at all times. The default is to 2 on most installations which is the adaptive mode. This can cause issues with the device going to sleep at rather inopportune moments. Although not necessarily your issue, something to keep note of.

  • The bt_coex_active option is for coexistence of BlueTooth and wireless. They operate on the same frequency range and can cause issues.

  • The swcrypto option is for forcing the cryptography off of the card and onto your system CPU. High workloads

  • The 11n_disable option is where I was referring to a choice. Setting the disable to 1 will force the card into G only speeds. This does indeed work on AC networks just fine, but will limit your connection to 54Mb/s speeds max. Setting this to 8 will not cause that restriction but rather a link aggregation. Here is the information from the module on this parameter:

    $modinfo iwlwifi | grep 11n_disable  
    parm: 11n_disable:disable 11n functionality, bitmap: 1: full, 2: disable agg TX, 4: disable agg RX, 8 enable agg TX (uint)

Once you have made a choice as to what of these option you are going to implement, you can do the following commands (as root) to unload/load the kernel, of course taking the new parameters on reload.

    sudo rmmod iwlmvm  
    sudo rmmod iwlwifi  
    sudo modprobe iwlwifi

Hopefully this information is as useful to you as it was me. This fully rectified my constant disconnections while on AC networks with this card.

2015-07-01 -- New site:

Found a companion site to the video card benchmark site:

2015-04-05 -- New site:

Found a bit back a nifty site for figuring out relative performances of all the video cards out on the market. Posting in lieu of poor memory and assumption I am not the only one interested in this information :D


EL & NVIDIA works quite well with the elrepo kmod-nvidia rpms that are in the stable repo.

  1. Install ELRepo
  2. Follow the instructions here for normal installs on 7.0 (RHEL or clone)
  3. To install the rpms use the following command:

    sudo yum install kmod-nvidia nvidia-x11-drv-32bit nvidia-x11-drv
  4. To finish up, we need to ensure that nouveau is blacklisted and glamoregl is disabled.

  5. The F/LOSS module, nouveau, should automatically get blacklisted, but lets ensure that the RPM did the job:

    sudo grep --color -e nouveau /etc/default/grubGRUB_CMDLINE_LINUX="rhgb quiet nouveau.modeset=0 rd.driver.blacklist=nouveau"
  6. Providing it is we can move to dealing with glamoregl. There are several ways to deal with this one, personally I chose to remove it via yum cleanly. The mailing list description is here:

  7. To do what I did:

    sudo yum remove xorg-x11-glamor
  8. Reboot.

2015-03-21 -- RHEL + STEAM

There are two methods for getting Steam installed in RHEL7 these days:

There is a difference in the two packages, as negativo has a specific goal in how he will package anything up. I found that on Fedora his packages are better. Here its a tossup. I suppose if you have a thing for making scripts that recreate all your repos, and this one is in the mix, fine. But please do check out his other repos as they are quality choices, and well made RPMs.

Now, for what I did:

  1. Install the EPEL repo:
  2. Install steam
    sudo yum install steam

Package info:

    date && sudo yum info steam  
    Mon Mar 21 20:07:52 CDT 2016  
    Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-  
    : manager  
    Installed Packages  
    Name : steam  
    Arch : i686  
    Version :  
    Release : 6.el7  
    Size : 2.6 M  
    Repo : installed  
    From repo : epel-steam  
    Summary : Installer for the Steam software distribution service  
    URL :  
    License : Steam License Agreement  
    Description : Installer for the Steam software distribution service.  
    : Steam is a software distribution service with an online store,  
    : automated installation, automatic updates, achievements,  
    : SteamCloud synchronized savegame and screenshot functionality,  
    : and many social features.

2015-03-21 -- RHEL + MUMBLE

I just dropped RHEL 7.1 onto my main workstation and had to relive and relearn how to install mumble onto it. Here is what you need to do.

  1. Install nux-desktop repo.
  2. Enable desktop-optional-rpms for your RHEL flavor.
  3. Install mumble:
    sudo yum install mumble

All done, there should be a GNOME 3 entry already. Happy voice-chatting!

    Package              Arch   Version         Repository                    Size  
    mumble               x86_64 1.2.6-5.el7.nux nux-dextop                   3.0 M  
    Installing for dependencies:  
    x86_64 0.6.31-14.el7   rhel-7-desktop-optional-rpms  33 k  
    celt071              x86_64 0.7.1-8.el7.nux nux-dextop                    61 k  
    protobuf             x86_64 2.5.0-7.el7     epel                         338 k

    Transaction Summary  

2015-03-21 -- RHEL + LibreOffice

LibreOffice is my go-to office tool, and it is not in the standard yum repos. But, all hope is not lost, Red Hat does indeed distribute this. Goto your subscription manager and edit the repos you are subscribed to add in the "optional-rpms" category for your flavor of RHEL:

    $ yum info libreoffice  
    Loaded plugins: langpacks, product-id, subscription-manager  
    Installed Packages  
    Name : libreoffice  
    Arch : x86_64  
    Epoch : 1  
    Version :  
    Release : 5.el7  
    Size : 0.0  
    Repo : installed  
    From repo : rhel-7-server-optional-rpms  
    Summary : Free Software Productivity Suite  
    URL :  
    License : (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1  
    : or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and  
    : Artistic and MPLv2.0  
    Description : LibreOffice is an Open Source, community-developed, office  
    : productivity suite. It includes the key desktop applications, such  
    : as a word processor, spreadsheet, presentation manager, formula  
    : editor and drawing program, with a user interface and feature set  
    : similar to other office suites. Sophisticated and flexible,  
    : LibreOffice also works transparently with a variety of file  
    : formats, including Microsoft Office File Formats.