Sitemap

UnionTech Operating System

14 min readMay 14, 2024

--

Press enter or click to view image in full size

Recently, I have been playing around with the UnionTech Operating System (also known as Unity Operating System, Unified Operating System, or just UOS), an operating system that, in the western world, is largely unknown. It is based on the Deepin operating system and comes in four flavors: the “server” edition, the “home” edition, the “professional” edition, and the “education” edition. Only the home edition is meant for regular individual users.

The operating system requires a license, and the home edition only costs 9 CNY per license (~$1.25), with UnionTech allowing a few three free actions through a WeChat account. The professional edition, sadly, does not meaningfully have any way to activate it for regular users. You need a license from UOS themselves to activate it, which they only give out to businesses, so if you want to activate it, you’re out of luck.

However, not having a license key is not the end of the world. The only thing that happens is that you cease to be able to pull updates from UOS directly, but the system is still functional. UnionTech has also stopped updating the home edition anyways, for the purpose of focusing on the professional edition, so there is no benefit to getting a license key for the home edition other than to have the nice “activated” green text in the settings menu.

UOS Pro

The professional edition has a different look to it than the home edition. It also comes with UOS AI, which very conveniently can be connected to a local AI server, so you do not need to go through UOS to use it and can even use it offline.

Press enter or click to view image in full size

My Repositories

I have a license key for UOS Home but not UOS Pro, and I do use the operating system as it is installed on a KX-6000 computer I own. The lack of it receiving updates means I should switch to a different Linux distribution, but it seems very fitting for a KX-6000 computer to be running UOS, and I paid for the license, so I want to use it. Thus, I have taken it upon myself to create my own repositories you can add to pull updates and software for key pieces of software that I wanted.

UOS Home

UOS Home Edition has not received updates in a few years. UnionTech also dropped the ISO from their website, although updates through their servers as well as the license verification still works, but those updates may go down eventually as well. Thus, I am hosting my own repository to allow you to not only get the Home Edition ISO, but to run a complete full-upgrade against my server. The repository does not include all the files in the original UOS Home Edition repository, but enough to run an upgrade to the latest version of the default software ever supported.

sudo bash 'echo "deb [trusted=yes] https://www.foleosoft.com/firmware/uos/home ./" > /etc/apt/sources.list.d/home-mirror.list'
sudo apt update
sudo apt full-upgrade -y

Aramis

I have a second repository based around Aramis, which is a tool I wrote to easily package pre-compiled binaries into a way that can be deployed on just about any Linux distribution. Aramis is not UOS-specific, but it does work on UOS.

sudo bash 'echo "deb [trusted=yes] https://www.foleosoft.com/firmware/aramis/amd64 ./" > /etc/apt/sources.list.d/home-mirror.list'
sudo apt update

The main that you will probably want to install from it is Flatpak. It contains Flatpak 1.16.1 which will run on UOS Home Edition if installed, and with Flatpak, you can install much more up-to-date browsers, like a more recent version of Firefox or Floorp. You can also install Steam and Lossless Scaling to actually play games on it.

If you want to install Steam, run the script below. This will do everything from setting up the Aramis repository to installing Flatpak and Steam and even settings up Lossless Scaling with the UI. It’s rather involved, hence I made a script to automate it.

cd ~/Downloads
wget https://www.foleosoft.com/firmware/aramis/sh/steam-setup.sh
bash steam-setup.sh

Change System Language

By default, it is in Chinese, but you can change it to English in the section of the settings menu shown below. You have to press the circular plus button and add the language, and then it will take a bit for it to complete. When you receive the notification that it completed, you can just reboot.

Press enter or click to view image in full size

Activation

By default, the system won’t be activated and will be in a free trial mode. Activating requires both a UOS account which you can make on the ChinaUOS.com website, and a WeChat account. You will need to connect your UOS account to your machine in the “UOS ID” section of the settings menu which first requires you to scan a QR code with WeChat, and then you can sign in using your email and username you signed up for on the ChinaUOS website.

Once you link the accounts, you can activate it in the “System Info” section of the settings menu. I don’t recommend doing this in a virtual machine. Just use the free trial in a virtual machine. A linked account gets a free activation, I wouldn’t waste that on a virtual machine. If you run out of free activations you will have to pay. (Edit: They may have lifted this cap since UOS Personal Edition is no longer given updates.)

Press enter or click to view image in full size

Rooting

By default, UOS is not rooted. The “sudo” command will not work. To root it, you have to first connect your UOS account as described in the previous section, and then go to “General Settings” then “Developer Mode” in the settings. Enabling developer mode will require a reboot, but afterwards you will have a rooted operating system.

Kernel Upgrade

The kernel that ships with UOS is pretty outdated, only version 5.10. Interestingly, the professional edition has an even more outdated kernel, 4.19. This makes it difficult to use with modern hardware as, in my experience, a lot of modern motherboards require at least 5.15 for things like WiFi and Bluetooth to work.

Since UOS is Deepin based, it is possible to install the Deepin 5.17 kernel from the link here. The two files you need are the ones listed below. You can install them by using “sudo apt install ./package-name”. In my experience, you do get some errors installing these, but if you reboot it will indeed boot with the 5.17 kernel, which I found was necessary to get UOS to work on my more modern PC.

  • linux-headers-5.17.3-amd64-desktop_5.17.3-amd64-desktop-1_amd64.deb
  • linux-image-5.17.3-amd64-desktop_5.17.3-amd64-desktop-1_amd64.deb

Android Apps

It is possible to install Android apps using UEngine. This will convert the apps to a “.deb” package which you can install using the “sudo apt install ./package-name” method mentioned before. I find this works decently well, but doesn’t seem to support Google account integration, meaning a lot of apps that connect to your Google account won’t work. Other software that either doesn’t require an account or lets you use a non-Google account (such as HelloChinese that lets you create an account with them with whatever personal email you want) tend to work better.

Press enter or click to view image in full size

Grand Search

I would highly recommend going to the Shortcuts menu and changing the “Grand Search” keyboard shortcut. By default, it is Shift+Space, and I find myself constantly hitting this on accident while typing and getting a search bar appearing. I changed it to Ctrl+PgDown.

Press enter or click to view image in full size

Annoyingly, the Android apps are kinda small, so I also installed VMG and mapped it to Shift+PgDown so that you can easily open a magnifying glass to look at the small apps, but that’s not a great solution as the moment you click something the magnifying glass goes away. If anyone knows a better solution that can magnify something and also allow you to interact with it through the magnified window, please let me know.

Steam

Update: I have an improved method. Please scroll up to the “Aramis” section and run the script there.

Get 艾米心amihart’s stories in your inbox

Join Medium for free to get updates from this writer.

I had given up trying to get Steam from the UOS app store to actually work. If you have an NVIDIA graphics card, it will fail to install the libGL:i386 library. If you try to install it manually, it breaks the NVIDIA drivers and the machine will only boot to a black screen. There is a comment saying this has been fixed in later versions, but I find these versions are only accessible in the latest beta of Deepin, and even then, when you successfully install the library and run Steam, the moment you actually try to run a game the game will crash.

However, I have had success getting Steam games to work, even with Proton. To do this, I installed the Flatpak version of Steam. UOS does not have a high enough version of Flatpak to actually install Steam, so you have to compile Flatpak from source. I actually managed to compile the very latest version at the time of writing. Compiling it requires also compiling and running this version of libostree. Below are the packages I needed to install to get them to build.

sudo apt update && sudo apt upgrade
sudo apt install \
libglib2.0-dev \
liblzma-dev \
libext2fs-dev \
libcurl4-gnutls-dev \
libsoup2.4-dev \
libgpgme-dev \
libfuse-dev \
libcap-dev \
libarchive-dev \
libpolkit-agent-1-dev \
libjson-glib-dev \
libappstream-dev \
libgdk-pixbuf2.0-dev \
libseccomp-dev \
libdconf-dev \
libsystemd-dev \
libzstd-dev \
xsltproc \
python3-pip \
steam-devices
pip3 install pyparsing
sudo apt autoremove

It’s very important to run the “autoremove” because otherwise you will get conflicting packages that will prevent Flatpak from starting. Below are also the configuration commands I used for libostree and flatpak.

#libostree
./configure --with-curl --with-soup --disable-man
#flatpak
./configure --disable-documentation --disable-selinux-module

When you install the “steam-devices” with the commands shown above, it will also add Steam to your system, but this version of Steam is the one from app store. If you run it, it will not work. You have to install Steam using flatpak then run it with the command below.

flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak --user install flathub com.valvesoftware.Steam
flatpak run com.valvesoftware.Steam

Note that after you “make install” Flatpak, it is important to reboot the computer. If you do not reboot the computer after installing Flatpak, it will not launch a service necessary for it to actually work, and thus Steam will not work. This is fixed merely by rebooting the computer.

Sadly, the “nvidia-settings” panel is not installable without also breaking the drivers. However, you can adjust settings manually just by creating a “20-nvidia.conf” file inside of the “/etc/X11/xorg.conf.d/” directory. You can enable TripleBuffer which seems to help a bit with screen tearing issues (I think?).

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce RTX 3080 Ti"
Option "TripleBuffer" "true"
#Option "ForceFullCompositionPipeline" "1"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
EndSection

You will notice I also commented out the option to ForceFullCompositionPipeline. This is a well-known setting for fixing screen tearing issues on Linux if you encounter them, however, it comes at the cost of GPU performance, and on my system seems to slow down games to be unplayably slow. For that reason, I commented it out, but you can uncomment it to give it a try if the first option isn’t working for you.

I would recommend you use an AMD GPU with UOS, but I have played through a few games, like Hardspace Shipbreaker, in high settings on my Nvidia GPU with little issues.

Desktop Icons

Given the Steam in the search bar will be the wrong Steam, you might want to create a desktop icon for the “correct” Steam. The same is true for Firefox. I don’t like to use Firefox from repositories because they tend to be out of date. It is better to just download it from Firefox’s website and extract it to /opt folder and create a desktop icon to launch it.

These desktop icons are just “.desktop” files in the “~/Desktop” folder. Below are two of them, the first one being the one I use for Steam, and the second one being the one I use for Firefox. You can just name these files “steam.desktop” and “firefox.desktop” respectively. If for some reason the icon names don’t work for you, you can also just set the icon to be an absolute path to a PNG file and it will also work.

[Desktop Entry]
Categories=System;
Comment=Open Steam.
Exec=flatpak run com.valvesoftware.Steam
GenericName=Open Steam.
Icon=steam
Name=Steam
OnlyShowIn=Deepin;
Terminal=false
Type=Application
[Desktop Entry]
Categories=System;
Comment=Open Firefox.
Exec=/opt/firefox/firefox
GenericName=Open Firefox.
Icon=firefox
Name=Firefox
OnlyShowIn=Deepin;
Terminal=false
Type=Application

Steam desktop icons don’t work by default with Flatpak Steam, however, below is a script I made that will export all the Steam icons for your games to whatever folder you run it in. For example, if you change the current directory to the desktop and run it, it will add all your Flatpak Steam icons to the desktop. For it to work, apps must either have a 128x128 PNG desktop icon, or a 32x32 PNG desktop icon where if the latter is found but not the former, it will resize the latter to the former.

#!/bin/sh
iconpath="$HOME/.var/app/com.valvesoftware.Steam/.local/share/icons/hicolor/128x128/apps"
shctpath="$HOME/.var/app/com.valvesoftware.Steam/Desktop"
iconpath=$(echo "$iconpath" | sed 's/\//\\\//g')
tmpdir=$(mktemp -d)
cp $shctpath/* $tmpdir

for i in $tmpdir/*
do
bn=$(basename "$i")
cat "$i" | \
sed -E 's/Icon\=steam\_icon\_([0-9]*)/Icon\='$iconpath'\/steam_icon_\1\.png/' | \
sed -E 's/Exec\=steam/Exec\=flatpak run com\.valvesoftware\.Steam/' \
> "$bn"
fn=$(cat "$bn" | grep -E 'Icon.*steam_icon' | sed 's/Icon\=//')
fn32=$(echo "$fn" | sed 's/128x128/32x32/')
if [ "$fn" != "" ]
then
if [ ! -f "$fn" ]
then
if [ ! -f "$fn32" ]
then
echo "Warning: Icon not found."
echo '> '"$fn"
else
convert "$fn32" -filter point -resize 128x128 "$fn"
fi
fi
fi
done
rm -r $tmpdir

echo '
[Desktop Entry]
Categories=System;
Comment=Open Steam.
Exec=flatpak run com.valvesoftware.Steam
GenericName=Open Steam.
Icon=steam
Name=Steam
OnlyShowIn=Deepin;
Terminal=false
Type=Application
' > steam.desktop

Smartphone Integration

There is a UOS app which you can use to integrate your smartphone with your PC. All this really does is allow you to scan a QR code which will connect your PC and your phone together with a file manager so you can easily transfer files between them. It is found in the file manage by clicking “My Phone” at the bottom. Personally, I do find this rather useful and a neat feature in the operating system.

Press enter or click to view image in full size

Deepin Album Bug

Update 10/30/2025: Despite this operating system supposedly not getting any more official updates, this bug seems to have been fixed. If I take a new system and apt update && apt upgrade, I no longer get an error that Deepin Album is held back. I will keep this section in this article as it is still useful knowledge to have.

There seemed to be a weird issue in my install that the Deepin Album would always say it needed an update but would fail to update. The reasoning seems to be an issue with it needing a new version of a library but the repositories not providing that library, and I cannot find anywhere to get a later version of said library.

A simple solution I found is that, well, even though it says it needs a new version of that library, it doesn’t really need it. Something I learned on Debian awhile ago when trying to get XFCE4 working on the WiiU is that it is possible to trick the operating system into thinking packages are different versions than they actually are, allowing you to bypass certain checks preventing you from installing things.

This is generally bad practice as if an application does make use of a later feature of a package, you will end up with an unstable system where things just crash at runtime. However, in my experience, quite often packages will say they need a later version of a library yet if I force them to install with an older version, I get no issues at all. Sometimes the minimum version is just set to whatever the developers built with and they did not even bother to check if it ran with older versions of the library.

Usually, to do this on Debian, rather than using “app install,” you use “app download.” This will download the package as a “.deb” file you can then modify to change its version. However, for some reason, it tries to pull in the source code with it, which you don’t need, and in this case they don’t even offer the source code in the repositories. While this usually works, in this very specific instance, it will give an error.

Instead, what you have to do is uninstall the package (libimageeditor) and keep note of anything else on your system it also removes, as you will want to reinstall that later. Then, you want to cache the package using “apt -d install” which will download the package to a cache rather than installing to the system. You can then find the “.deb” package inside of “/var/cache/apt/archives” and then can move it out of there to your working directory.

Then, you will want to extract the package to a temporary folder, modify the “DEBIAN/conf” file to change the version, and then repackage it to the new package with a higher version and install that package using “apt install ./packagename”. Since this is a lot of steps, below is a single script that will create the updated package for you. You must use “sudo bash” before running the script as all the commands expect elevated privileges. Also, again, remember that you need to uninstall libimageeditor first.

#run this program in a sudo terminal
echo y | apt -d install libimageeditor
mv /var/cache/apt/archives/libimageeditor_1.0.21-1_amd64.deb .
rm -rf tmp/ && mkdir -p tmp/
dpkg-deb -R libimageeditor_1.0.21-1_amd64.deb tmp/
cat tmp/DEBIAN/control | sed 's/1\.0\.21-1/1\.0\.29-1/' > .tmp
mv .tmp tmp/DEBIAN/control
dpkg-deb -b tmp/ libimageeditor_1.0.29-1_amd64.deb
rm -rf tmp/ libimageeditor_1.0.21-1_amd64.deb

Now, if you install this package, you will be able to upgrade to the latest version of deepin-album without errors. It may be possible, for a more “proper” solution, to get libimageeditor v1.0.39 working from the Deepin pool here. This will fail to install, however, because of several outdated packages, so you would need to also update those packages, and I currently cannot find where to locate them.

Other Apps

Private Internet Access for a VPN worked fine for me, no issues. My software I use for work, VMWare Horizon Client, also worked nicely without issues. The app store has a lot of other useful apps I use a lot such as OBS, GIMP, Shotcut, VirtualBox, and VSCode. While UOS AI is not supported as this is only available on the latest versions of UOS through the Professional edition, this is really just a tool to integrate an AI. You can use other apps for AI integration, such as VSCode+AI-Genie for ChatGPT integration.

Since it is a Chinese operating system, there are some nice convenient apps for that. There is a WeChat app and a Bilibili app. There’s also various other apps for Chinese services, but most Chinese software is locked down behind a Chinese phone number which is not possible to acquire overseas, so I cannot try them to test them out. It also has built-in the ability to switch between typing Chinese with Pinyin and typing English characters as normal just by using Ctrl+Space to switch between them.

--

--

艾米心amihart
艾米心amihart

Written by 艾米心amihart

Professional software developer (B.S CompSci), quantum computing enthusiast.