All posts by adam

Pinebook Pro Encrypted Home with OpenSUSE

Just a quick tutorial for setting up an encrypted /home partition on your Pinebook Pro with OpenSUSE Tumbleweed.

This assumes you are doing a fresh install. If not, be sure to backup your data.

Initial Installation

Follow OpenSUSE’s tutorial for creating an bootable SD card, booting from it, and putting the same image on the eMMC here:

(I’ll be using the KDE Image and Tow-Boot)

Once you have imaged OpenSUSE to the eMMC, restart and boot from the SD card again.

Resizing Root

Open Konsole (or another terminal) and install the KDE partition manager to the SD card.

zypper install partitionmanager

Open KDE Partition Manager from the Application Launcher

Choose the eMMC device on the left and resize the root partition. I shrink it so roughly 32GB is free for my /home partition at the end of the drive.

Shutdown and remove the SD card.

Boot from the eMMC.

Log in as root.

Once again, install KDE Partition Manager (this time on the eMMC) by opening Konsole and running:

zypper install partitionmanager

Open KDE Partition Manager from the Application Launcher

Create a new partition in the new blank space.

Choose BTRFS with LUKS encryption.

Set a password (you’ll need to enter this password every time you boot, so make sure it’s one you’re remember).

Open Konsole

Ensure that the new partition is unlocked, entering the password if prompted:

cryptsetup luksOpen /dev/mmcblk0p4 luks-`cryptsetup luksUUID /dev/mmcblk0p4`

Added the encrypted partition to crypttab so I can be automatically mounted at boot:

echo luks-`cryptsetup luksUUID /dev/mmcblk0p4` UUID=`cryptsetup luksUUID /dev/mmcblk0p4` none luks >> /etc/crypttab

Add the encrypted partition to fstab so it’s automatically mounted at boot:

echo /dev/mapper/luks-`cryptsetup luksUUID /dev/mmcblk0p4` /home btrfs defaults 0 0 >> /etc/fstab

Reboot. You should be asked for encryption password during the boot process.

Log in as root and open Konsole again.


You should see something like this:

You should see something like this:
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
mmcblk0                                       179:0    0  58.2G  0 disk
├─mmcblk0p1                                   179:1    0    16M  0 part  /boot/efi
├─mmcblk0p2                                   179:2    0   500M  0 part  [SWAP]
├─mmcblk0p3                                   179:3    0  32.7G  0 part  /
└─mmcblk0p4                                   179:4    0    25G  0 part
  └─luks-26a9eb0a-fc68-47f5-917c-89281603cfa8 254:0    0    25G  0 crypt /home

The last partition should be type “crypt” mounted as “/home”. If so, you’re all set!

Finally, create a real user. Their home directory will default to the encrypted /home mount.

Winds of Paradise 0.2 Build 191 Released

All in-game controls have been moved to Unity’s new input system! This took a *really* long time, but I’m so relieved to finally be there.

With that change, pretty much all controls and interactions could use some testing.

Interested in testing?

Make sure to create your characters on the Free Harbor server. Keiki is for internal testing only (and will often break).

Windows Installer

iOS – Email me for a TestFlight invite: adam at

Linux (extract and run windslauncher)

Android – Let me know if you’re interested and I’ll post APKs

Deploying Autodesk AutoCAD 2023 and Later with Intune

Hi everyone. Now that Autodesk has moved to a new method of creating custom installers for their products my older “Deploying AutoDesk AutoCAD 2019 with Intune” article needed some updating.

Below you’ll find the instructions to deploy any Autodesk application using Microsoft Intune and Endpoint Manager. I’ll be using AutoCAD 2023 in my examples, but the process should be similar for any Autodesk product that appears on the Custom Install screen.

In order to create a custom installer you’ll need to perform some customization steps through the Autodesk website, some in Windows, and finally some in Endpoint Manager.

Create the Custom Installation Package

Log into the Audodesk management site at:

Click Custom Install

Click Create new

Under License Type choose Serial Number
Select the product you are looking to package
Click Next

Next to Package name, I’m going to use AutoCAD2023
You can use whatever you’d like, but choosing that will make sure your files look just like mine.

You can only create a deployment to a network share. Since we’re using Intune, this isn’t relevant, so we’ll pick the hidden C: drive share to specify your local computer. Choose \\localhost\c$\users\[your username]\Desktop\autocad .

You can uncheck the “Install Autodesk desktop app” if you won’t be using it.

Click Download

Run the downloaded file. This will create a folder on your desktop called autocad .

You may see messages like the below when installing. You can ignore them and click Continue.

Package the Installer

If you haven’t already, download a copy of the Microsoft Win32 Content Prep Tool to your Downloads folder from

Open Windows Terminal or PowerShell. Change directory into the directory just above the autocad folder you create for the network installation.

For me that’s:

cd ~/Desktop

Tell the Intune prep tool to create a package from the autocad directory, use the Installer.exe located in the image folder, and save the package to your current directory:

~/Downloads/intunewinapputil.exe -c .\autocad\ -s image\Installer.exe -o .

The package will be named Installer.intunewin . Since that’s not very helpful, rename it to something that is.

mv Installer.intunewin autocad2023.intunewin

Create & Deploy in Intune

Log in to Intune device management at:

Choose Apps->All Apps

Click the Add Button

Choose the App Type “Windows app (Win32) then click Select at the bottom of the screen.

Choose the autocad2023.intunewin file you created.

Open the autocad folder on your desktop.

Right click on AutoCAD2023.bat and click Edit

Under the line

rem ========== Install the deployment silently ==========

Copy your installer version number.

Return to Endpoint Manager.

On the Program step change the install command to the following (making sure to use the version of the installer copied in the previous step):

image\Installer.exe -i deploy --offline_mode -q -o "image\Collection.xml" --installer_version ""

For the uninstaller, this is a bit of a kludge since it only uninstalls the main component, not the rest. For me, this is sufficient.

The IdentifyingNumber seems to be the same regardless of version number, but to be sure, on a machine with AutoCAD 2023 installed, run the following in PowerShell.

Get-WmiObject -Class Win32_Product | where name -eq "AutoCAD 2023 - English"

Make the uninstall command like mine below, but making sure to use the IdentifyingNumber that you got above.

msiexec /uninstall 

Choose 64bit Windows 10 under the Requirements

Under Detection Rules choose “Manually configure detection rules”

Click + Add

Choose MSI for rule type and enter the same identifier as above: {28B89EEF-6101-0409-2102-CF3F3A09B77D}

No Dependencies are needed.

Finally, assign it to whatever device groups you need. Devices in those groups will automatically download and install AutoCAD 2023. Alternatively, you can assign it to user groups and those users can install AutoCAD from the Company Portal app.

Thanks again for all of you that patiently waited for this while we got our licensing sorted with AutoDesk and the amazing staff there who got it all working for us.

Please feel free to leave me comments below and I’ll reply as soon as I can.


KDE on Rocky Linux 9

Installing KDE on Rocky Linux 9 is easy, as long as you enable the right repositories. One of these have changed since Rocky Linux 8, so if you’ve found a RL8 guide online, you may have been stymied.

Install Rocky Linux and choose either Server with GUI or Workstation under software selection.

Make sure the account you created for yourself is an administrator.

After installation has completed, log in and open up a terminal app.

Add the EPEL Repository

sudo dnf -y install epel-release

PowerTools is now called CRB. This repository has many of the prerequisites that KDE needs.

sudo dnf config-manager --set-enabled crb

Update packages with the new repositories

sudo dnf -y update

Install KDE Plasma

sudo dnf group -y install "KDE Plasma Workspaces"

Disable the GNOME login screen an enable the KDE login screen

sudo systemctl disable gdm
sudo systemctl enable sddm


sudo reboot

Once you reboot, you should be at the KDE login screen.

Make sure to choose Desktop Session: Plasma (X11) or Plasma (Wayland) from the login screen.

Enjoy KDE Plasma on Rocky Linux 9!

Fixing Unity3D Hub on Fedora

Unity3D isn’t officially supported on Fedora, only RHEL & Centos. It will work fine, it just needs a little tweak.

You can install Unity Hub by following the instructions for RHEL/Centos here:

After doing so, you’ll probably get a blank screen:

Unity Hub Blank

If you run Unity Hub from the console you’ll see the following error:

ERROR: Licensing SDK logging callback is not registered. Please use 'registerLoggingAdapter' function from the SDK to do
If you try running the licensing SDK directly you'll get this error:
No usable version of libssl was found
[1]    694717 IOT instruction (core dumped)  /opt/unityhub/UnityLicensingClient_V1/Unity.Licensing.Client

You can see from the error that Unity is looking for an older version of SSL that is present on RHEL/Centos systems, but not newer version of Fedora.

To fix this, just install a compatibility version of SSL and kill any running versions of Unity Hub

sudo dnf -y install openssl1.1 && killall -9 unityhub-bin

Once that’s done, Unity Hub should work as expected!
If you’re still having trouble, a full reboot should do the trick.

Unity Gamepad with UI Touch Support

This is probably a really simple topic, but it had me stumped for a bit, so I thought I’d post about it.

I have a Unity game I’m developing that I’m adding controller support to using the Unity Input System. One of the things I realized was that, when Unity detected that a gamepad/controller was connected, the UI stopped responding to touch.

The really simple fix is that Touchscreen needs to be added as an optional component to the Gamepad input settings.

First, find your Controls prefab and double-click it.

Click the drop-down next to All Controls and choose whatever you called your gamepad settings (I called mine Controller).

Click the dropdown next to Controller (or whatever you named this control scheme) and click Edit Control Scheme.

Gamepad should already be set to required.

Click the + icon, choose Touchscreen, and set it to optional.

That’s it! Now whenever a player connects a gamepad/controller they will still be able to use the UI in touchscreen mode.

Tracking Down AzureAD Device Sign-Ins

I recently needed to track down who had recently used a device bound to AzureAD. We don’t tend to make use of the Primary User field, since our devices tend to be handed out in bulk to large groups of people at once, rather than one-at-a-time. This meant I had to track down who was using which device in a more roundabout method.

To accomplish this, you’ll need to use both Microsoft Graph and Microsoft Endpoint Manager.

Lookup the Device ID

First you’ll need Azure’s device ID for the computer.

Go to

Click Devices on the left then Windows Devices.

Search for the device you are looking for.

Click on it

In the address bar of the browser, the last part of the URL will be the device ID. Select and copy it.

Query Device Sign-In Information

Now that you have the Device ID, you can lookup the login history using Microsoft Graph.

Go to

Make sure to sign into graph, or you’ll only see the sample data.

Query type: GET

Version: beta

URL:[device ID here]

Click Run Query

You’ll only see the first several lines, which probably won’t show the logged on users.

Click the Expand button

Scroll down to where it says usersLoggedOn then select and copy the ID inside of the quotes.

Go back to Endpoint Manager

Click Users on the left.

Paste the user ID into the search field. This should tell you the name of the user who logged into that device. If there were multiple people recently signed in, they’ll all be in the usersLoggedOn array.

Fixing KRDC VNC Scaling

I’m going to show you how to fix a problem that’s driven me crazy literally for years.
If you’re using KRDC to remotely access a computer with VNC, the Scale button, by default, does nothing.
It’s actually a super easy and kind of silly fix. If you prefer video, see my YouTube video on this embedded at the bottom.

If you click the Scale button nothing happens

If you look at the KRDC config file you can see that scaling defaults to 100.


For some reason, this causes the scaling button to do nothing.
To fix this, you could hand edit the krdc config file every time you have a new connection, or, you can just add the Scaling Factor action to the toolbar.

Go Settings then Configure Toolbars

Scroll down and select Scaling Factor
Click the right arrow to add it to the toolbar
Click the up arrow to put it next to Scale
Click OK

If you click Scale, still nothing happens.
Turn Scale on and then drag the slider and scaling will start working!

Turn on Scale and adjust the slider

At this point you won’t have to drag the slider anymore.
Once scale is off of its default value, the scale button works as expected. Simply do this for every new VNC client you connect to.

If you prefer video, follow along here:

Fix for Android SDK Errors in Unity on Linux

When I add Android support for Unity on Linux as an additional module in Unity Hub, I find that Unity is unable to the SDK.

The problem appears to be that Unity does not set the binaries included as executable after extracting. I believe this may be fixed on newer versions of the Editor, but this is an issue for me on 2020.3.28f1.

The simple fix is to make all files in the AndroidPlayer executable. If Unity is open, close it.

Open Konsole or another terminal app.

cd ~/Unity/Hub/Editor/[Unity version]/Editor/Data/PlaybackEngines/AndroidPlayer
find . -type f -exec chmod +x {} \;

When you re-launch Unity, it should have no problem using the Android SDK.

VS Code Namespace Not Found With New Unity Input System

If you’re switching to the new Unity Input System and using Visual Studio code, you’ll probably hit the hiccup I did.

After switching back-ends, you’ll find that you’re not able to use the new namespace. If you try, you’ll get “namespace not found.”

using UnityEngine.InputSystem;

To fix this, you’ll simply need to create the csproj file so VS Code knows to use the new assembly.

In Unity Editor go to Edit->Preferences
Choose “External Tools”
Click the “Regenerate project files” button

After that, VS Code should recognize the new UnityEngine.InputSystem namespace!