This will be quite similar to a lot of stories I’ve read on Reddit, Stack, etc lately. But last week there was a straw which broke the camel’s back.
I’m currently installing my tool set on a macbook, after spending nearly half my life on Linux. As an analogy; it feels like finally trading in that old-timer car, which you know every nook and cranny of the engine bay but it just isn’t up to it’s task in this world.
In the past 20 years I loved how the merry heap of Open Source devvers tackled every (really every) hurdle and created this OS shaped out of hope and dreams. A project started so small and turned to influential by those same characters 🙂 I laughed about the naming of less (less is more), used cowsay on most of my terminal messages and could use this free and open solution to earn money as a self employed engineer.
I installed Warty Warthog and was wondering what I would do with the rest of my day, since it only took 30 minutes instead of a full day compiling in Gentoo.
I found out about so many beautiful solutions built, maintained and cared for by communities which were revolving around the community itself, instead of self-glorifying CEO personalities.
The straw was an email from the customer I’m currently working at, they stated that you need to be MS Intune compliant to be able to login to corporate resources. Which means that I can reach everything (yay openvpn) but not use it (nay intune)
In all those years it has always been corporate policies which broke stuff for me. A customer or client would ask me to join their network and it’s tough to explain that you need to recompile gnome-network-manager to add VPN support. For me myself I can explain why this time is an investment, but when a client/customer is waiting for me to deliver value it’s a different story.
I spent a full day on getting audio to work in MS Teams via Citrix Workspace (both Citrix and MS are very corporate), and that shows where the issue lies; The corporates (not meant as a negative!) don’t care that much about the minority share that Linux users are. They don’t lose (much) money when I can’t use their products, so why bother.
Next to that the companies which develop solutions for Linux are in trouble with testing, the group is abysmally small and the techniques they used are splintered (gnome/kde, ubuntu/fedora/mint/pop_os, cpu architecture, sound subsystems, etc etc) so it’s neigh impossible to test a new release properly to prevent previous bugs to re-appear.
I switched to a Macbook three days ago, ported my whole workspace and most of the tools are working fine. Next to that, I am now compliant, thus can use the corporate facilities without restrictions.
And. It. Just. Works.
Honestly it feels like losing a good friend, who’s been there for most of my life.
Goodbye Linux, it’s been a blast. I’ll see you on all of my servers, so I guess we’ll be neighbours, no longer roommates.
Since last week I am working with a virtual desktop (VDI) through Citrix Workspace (ICAClient) and noticed I can not use Teams to call or join meetings.
This message is displayed in Microsoft Teams:
There’s a problem with your connection. Still connecting to remote devices. Calling isn’t available yet.
How to diagnose if the cause is the same as what I encountered
Log in to your VDI, play some sounds AND talk into your microphone to make sure your audio is actually working. Check this via the sound mixer, that’ll show a moving bar if it’s receiving sound by your microphone. Speakers should work when you watch a random youtube movie.
Next; Open MS Teams and click the “Three dots” settings menu, choose About, then Version. When your Workspace and Teams are expecting HDX to work but it didn’t, you will see this message: Citrix HDX Not Connected
MS Teams, Settings – About – Version: “Citrix HDX Not Connected”
Note: If it would be working, you would have seen Citrix HDX Connected
The third option is if Teams does not expect Citrix HDX to work, then it simply doesn’t show anything about Citrix HDX and tunnels sound over the regular sound channels. This is what we want to accomplish in the next chapter.
There is a registry entry MSTeamsReditSupport, which is set every time you connect to your VDI with Citrix Workspace. From what I understand; Citrix Workspace communicates to your VDI that it is capable to receive HDX optimized audio streams. Next to that MS Teams checks that registry setting when it is started to use/not use HDX optimized audio.
Solution: Change MSTeamsRedirSupport to zero
Change MSTeamsRedirSupport to 0 (zero) in registry. The exact location of this registry entry is here: HKEY_CURRENT_USER\SOFTWARE\Citrix\HDXMediaStream\MSTeamsRedirSupport
It’s a bit tedious to open Registry Editor every time, so you can also create a registry entry file MSTeamsRedir.reg In this file you can paste this content:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Citrix\HDXMediaStream]
"MSTeamsRedirSupport"=dword:00000000
Remember; You should run MSTeamsRedir.reg every time you connect to the machine or when you restart MS Teams.
Why is this a problem?
I do not know exactly, but I know that the HDX optimized socket on my laptop can not be reached contact the VDI and I tried searching for a solution for a couple of hours. I then became fed up with HDX optimized sockets and thought about buying a macbook to just make the damn thing work. After that short existential crisis I kept searching for a possible solution and was happy to find this registry setting.
My emotions with Linux after figuring stupid things out which simply work on other OS’s
What I’ve tried and did not work:
1.) Run Citrix supplied hdxcheck.sh and see if you have all the libs installed, I tried installing all libs manually and in the end still had no HDX optimized sound in my VDI. You can run this command via the following path: /opt/Citrix/ICAClient/util/hdxcheck.sh
You can see in the example above that Intel means that you’re still using the Intel onboard graphics card for all your OpenGL stuff (including games like CS:GO)
And Intel GPU is not good for gaming.
Note: If it actually says NVIDIA in your output then don’t continue with the solution below.
Solution: (Re-)Install the NVidia driver
Check if you have the driver currently installed:
dpkg -l |grep nvidia
Notice: If the package is installed on your system then the package name is preceded by ii
There should be driver package named nvidia-driver-xxx installed. Where xxx is the version number.
In my system it looks like this:
~ î‚° dpkg -l |grep nvidia
ii libnvidia-cfg1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-common-470 470.57.02-1pop0~1627044105~21.04~f9815ed all Shared files used by the NVIDIA libraries
rc libnvidia-compute-435:amd64 440.31-1pop1~1573485407~19.04~af08493 amd64 Transitional package for libnvidia-compute-440
rc libnvidia-compute-455:amd64 460.67-1pop0~1616430777~20.04~71e1ad1 amd64 Transitional package for libnvidia-compute-460
rc libnvidia-compute-460:amd64 465.31-1pop0~1623777959~20.10~a3ca7f3 amd64 Transitional package for libnvidia-compute-465
rc libnvidia-compute-465:amd64 470.57.02-1pop0~1627044105~20.10~f9815ed amd64 Transitional package for libnvidia-compute-470
ii libnvidia-compute-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA libcompute package
ii libnvidia-compute-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA libcompute package
ii libnvidia-decode-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA Video Decoding runtime libraries
ii libnvidia-decode-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA Video Decoding runtime libraries
ii libnvidia-encode-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVENC Video Encoding runtime library
ii libnvidia-encode-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVENC Video Encoding runtime library
ii libnvidia-extra-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 Extra libraries for the NVIDIA driver
ii libnvidia-fbc1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-fbc1-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-gl-440:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 Transitional package for libnvidia-gl-470
ii libnvidia-gl-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii libnvidia-gl-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii libnvidia-ifr1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL-based Inband Frame Readback runtime library
ii libnvidia-ifr1-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL-based Inband Frame Readback runtime library
rc nvidia-compute-utils-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 NVIDIA compute utilities
ii nvidia-compute-utils-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA compute utilities
rc nvidia-dkms-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 NVIDIA DKMS package
ii nvidia-dkms-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA DKMS package
rc nvidia-driver-460 460.67-1pop0~1616430777~20.10~71e1ad1 amd64 NVIDIA driver metapackage
ii nvidia-driver-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA driver metapackage
rc nvidia-kernel-common-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 Shared files used with the kernel module
ii nvidia-kernel-common-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 Shared files used with the kernel module
ii nvidia-kernel-source-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA kernel source package
ii nvidia-settings 470.57.01-0ubuntu0.21.04.1 amd64 Tool for configuring the NVIDIA graphics driver
ii nvidia-utils-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA driver support binaries
ii screen-resolution-extra 0.18build2 all Extension for the nvidia-settings control panel
ii xserver-xorg-video-nvidia-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA binary Xorg driver
~ î‚°
Re-Install the driver package by installing the latest nvidia-driver-xxx package to your system with the following command:
sudo apt install nvidia-driver-xxx
Accept the additional packages and after the installation, reboot your system. You should now have the correct output when you run the glxinfo command in the first paragraph.
Gnome has been my favourite Window Manager for ages, to me it feels like a cosy blanket meaning that I’ve arrived at home 🙂
Part of that feeling is because of the awesome extensions that so many enthusiasts have made over the years. If you don’t know, the extensions add so much productivity and possibilities to an already great window manager.
I’ve put my favourite extensions in the list below. This list is part so that I can remember myself but also to explain why some of these extensions are so cool to use (to me at least)
Click the Extension name in the table below to go to the extensions web page on extensions.gnome.org
Clipboard manager for Gnome. I ALWAYS use a clipboard manager, doesn’t matter if I’m working on a Windows, Linux of OSx machine, it is one of the first things I install. Such a productivity booster. Clipboard indicator is one of a few clipboard managers in the extensions repository, I like the simplicity.
A dock for the Gnome Shell. One of the most popular extensions because it turns the dash into a dock! (What’s in a name) Makes switching and launching of applications easier.
Makes it easy to order your windows in a grid. Very nice productivity tool. I mostly use the 5×4 grid, with browsers having a size of 2×4 and terminals sized 1×4. You can switch on the fly between three (configurable) grid presets
Small widget which streams internet radio. I most often listen to Pinguin Radio and some of the local Dutch radio stations. Note: Does not listen to the keyboard media keys Favourite radio stations: Pinguin Radio: http://streams.pinguinradio.com/PinguinRadio192.mp3 Radio 538: http://22353.live.streamtheworld.com/RADIO538AAC.aac Radio Veronica: https://20873.live.streamtheworld.com/VERONICA.mp3 Radio 3FM: http://icecast.omroep.nl/3fm-bb-mp3
Shows all the input and output devices. I love this since I have several audio in- and outputs (USB amp / headphones / HDMI output via monitor) for different purposes. This extension gives me the current selected in- and output as well as letting me choose quickly.
One of the simplest and cleanest looking system monitors (CPU, Mem, Storage, Network, Load) It takes minimal space in the bar, yet gives me exactly the information I want on a glance. The extension works with colors (Shades of yellow, orange, red) to show how busy a resource is. For me this is very convenient if I want to know IF my CPU is being used heavily. One click on the pane and you see the top 5 of each category in a handy overview.
Changes the wallpaper based on several providers, I have it set to pick a picture from a folder every 30 minutes. It also serves a little like a pomodoro timer that way.