Today I wanted to check some stuff on a pod running in my local kubernetes cluster. I’m still getting used to Kubernetes, thus didn’t want something ugly like exposing that pod.
The easiest way of doing it for me has been to spin up a temporary pod using Ubuntu;
kubectl run myshell --rm -i --tty --image ubuntu -- /bin/bash
Now you can do whatever you want in the pod and when you log out of myshell, it’ll be removed immediately and we’re back to square one! <3
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.
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
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.
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.
For a colleague I just made a screencast of a problem we were discussing. I was trying to use the minimum amount of tools in Gnome/Ubuntu and wanted to share the proces with you all.
Goal: Create a screencast recording of my desktop with narrated (recorded) audio at the same time.
If you are very curious and want to see the result immediately, look at the video below:
I use Pop!_OS 21.04, which is based of Ubuntu. In Pop!_OS I use Gnome with Wayland. All the instructions below will work with Ubuntu and any Ubuntu based distribution as well.
This howto is divided in several sections:
Desktop (Video) recording
Audio recording
Putting the video and audio recording together
Additional tools used in the video:
Show the webcam (guvcview)
Written annotation on a page (xournal++)
Written annotation on screen (Draw On You Screen)
Video recording:
Since I want to use the most simple method, my approach is to use the built-in screen cast ability in Gnome.
Press Ctrl+Alt+R to start the screen cast recording.
When the recording is in progress, you see a red filled circle in your notification area:
When you press Ctrl+Alt+R again, the circle disappears and the recording is saved to the Videos folder in your home folder:
Note: This video file is without audio.
Audio recording
As the most simple solution I used the builtin Sound Recorder in Gnome:
Press “Record” to start your recording and click “Done” when you would like to end your recording. You can see me pressing the buttons in the recorded screen cast.
Important: You need to press the screencast start keyboard command Ctrl+Alt+R and the Record button at the same time, or your video and audio will be out of sync.
When you stop the recording, the Ogg Vorbis file will be saved in the default location in your home folder, which is: ~/Recordings.
Combine the video and audio
Right now you have two separate files, not really useful when they are not combined.
ffmpeg
this is the command itself
-y
overwrite output files without asking
-i {file location}
input file + file location
Note that there are two input files (video & audio)
-map
Designate one or more input streams as a source for the output file. The number is the first (0) or second (1) input file. The map itself shows what we are using in the output. In this case it is 0:v to use the video for the first input file and 1:a to use the audio of the second input file
-c copy file.webm
Specify the output file, in this case it will be copied to file.webm in the same directory as where you run the command.
The result is what happens here:
This is the minimum necessary to create a screencast!
For example, you can send this webm video output file to people over email / file share / whatever you’d like. You can also upload it to Youtube, which can process the output file and you are done to spread some knowledge!
Add some extra spice to your screencast
To add some engagement with whoever will view your screencast, you can show your own webcam in the screen. You can use the built in program Cheese
Another option is to use guvcview, which has a cleaner interface (no buttons on the webcam output window)
Install with sudo apt install guvcview , start the program with guvcview.
Then select your video input device. You can minimize the settings pane so that you’re left with only the video of your webcam for the introduction/conclusion of your video.
Annotation
For annotation I use Xournalpp (xournal++) which helps me in drawing with my XP-Pen drawing tablet. I think it makes the screen cast a bit more entertaining compared to showing plain text but you can decide for yourself.
You can also use a Gnome Extension called Draw on You Screen by Abakkk, with this extension you can do annotations directly on the screen and thus show your thoughts / comments / pointers on screen directly.
Note: I don’t use this extension in my example video though.
Conclusion
I hope this blog post helps you in creating screen casts with the simplest possible tools. Good luck and hope to see your videos around on the web!
Today I wanted to join a meeting but I was unable to be heard.
I’m connected to a Windows desktop via Citrix Receiver, I’m connecting from an Ubuntu Linux host.
Looking at the sound settings in my windows desktop, I saw that there was no recording device. So not being able to send sound makes sense then.
To enable input sound, add the following line to the WFClient section in your personal ICA settings file:
~/.ICAClient/wfclient.ini
[...]
[WFClient]
AllowAudioInput=True
[...]
Next, log off and log back into to your windows desktop and check the recording tab on the Sound settings, there a recording device now.
Important:
If you don’t know or understand certificates / root and intermediate certificate authorities, get someone who understands to follow below instructions.
I tried connecting to the company’s citrix server, but kept hitting the same error when I tried to open the connection:
Contact your help desk with the following information:
You have not chosen to trust "INSERT YOUR CA HERE",
the issuer of the server's security certificate (SSL Error 61)
It seems that Citrix has an alternate directory where it stores it’s trusted cert’s / certificate authorities. Even though you can see that the server’s certificate is trusted (by root CA’s) via a web browser, we need to copy those to the correct directory.
In short: Copy the root and intermediate CA’s to this directory: /opt/Citrix/ICAClient/keystore/cacerts Continue reading “Citrix Receiver on Linux: SSL Error 61 ("You have not chosen to trust")”
This is a bit of a nuisance, after a fresh install of Ubuntu Gnome, I was not able to install extensions from extensions.gnome.org.
Firefox asked me if I’d like to install the extension but after a Firefox restart I still wasn’t able to install any plugins.
To be precise; this message was shown: Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector.
The solution was to install the chrome-gnome-shell package;
sudo apt-get install chrome-gnome-shell
This fixes the message from both chrome and firefox.
I’ve been quite busy this whole day with a partially complete database dump and wanted to prepare for tomorrow with some ninja bash voodoo shizzle. I’m doing a braindump here because I know I’ll have forgotten this when I wake up tomorrow 🙂
The command stated below was the first working example I’ve gotten together, please let me know if you know a neater / better solution!
Sed is very very powerful, which is a good thing to be aware of.
I was looking to compare the output of a sed command to the original file before I wanted to execute the sed command directly on the file and came across this handy trick.
It works by using temporary named pipes inside the diff command.
Contents of file:
[code title=”contents of numbers.txt:”]
One
Two
Three
Four
Five
[/code]
If I just want to remove the line which begins with “Four”, I can check my sed command like this:
[code title=”Terminal output:”]
joris@beanie ~
$ diff <(sed ‘/Four/d’ numbers.txt) numbers.txt
3a4
> Four
[/code]
Awesome possum, now I know my sed command won’t destroy anything.