My previous AMD Based FreeBSD Desktop is still up and running – it will now be my kids computer … so I needed a new one … but not a bigger one I spent way too much time finding new Mini-ITX case for the next one … and after all possibilities … I got Silverstone case again :] … because nothing else was this small and with all needed features. Also … I was thinking WHAT exactly should I buy – especially in the times with AI prices. For one of my older projects that failed (I hope to also publish about that some day) I had AMD Ryzen 4750GE CPU with 35W TDP but still 8C/16T CPU on AMD4 socket … so instead of killing all price/performance efficiency with DDR5 and AM5 setup … I went to decent AM4 option.CaseOlder build used Silverstone SG05 case and this one uses Silverstone SG13 … which is almost the same. WHAT SG05 SG13 Width 218mm 222mmHeight 175mm 181mm Depth 276mm 285mmVolume 10.5L 10.8LSo one can say that its just a tiny 5% increase in size … but a welcome and needed one.DifferenceThe new setup is about 25% faster when it comes to CPU and 40-60% faster in GPU department … depending on the workload. The SSD/NVMe speeds will be the same as its still the same AM4 platform … and RAM would also be similar as its again DDR4 sticks.AssemblyAfter having the parts laying around for about a quarter (yes I was busy) my son finally forced me to make that build … and it was a positive push – we sit down in dining room with all needed parts and I started to assembly it with my son being more then curious how it is to actually build a computer.First CPU into the motherboard … and NVME into the M.2 slot.Next thermal paste and fan onto the CPU.To be honest it was easier said then done as the Thermalight AXP-90 X47 comes with install options for both AMD and Intel solutions and it took me a little time to check all needed screws to use and their accessories.Next – motherboard into the case.Next RAM or GPU … as GPU was measured to fit within millimeters in that case I started with the GPU.… and no matter how I tried … no matter which angles I tried to use … GPU would just not fit into the case I found funny that the GPU name was Challenger and it was REALLY challenging to fit it into the case.I even decided to name that system challenger after that. I am a big fan of Dodge Challenger cars … I own a Dodge personally … just not a Challenger … yet I inspected the GPU from every possible direction and one detail caught my attention …The plastic cover with the fans was about 1cm wider then the PCB for the card … so I decided to cut it precisely at that place.This is how the plastic cover looked like after being cut to the PCB length.Here is how it went with the cutting – something like 2-3 minutes of work.… and after reattaching the cover to the GPU card.I went back to trying to fit the GPU into the case … but the cut was not enough … it would still not fit … so I changed strategy. I dissembled the expansion slot bracket from the GPU – out that expansion slot bracket into its place in the case – and tried to fit the card again – so later I can add screws to expansion slot bracket to attach it to GPU again … but I was not able to fit all those again. So next ‘victim’ of cutting was the expansion slot bracket … before on the picture below.… and after Not much was needed – but without that cut – fitting that Challenger into the case was not possible.After that I was able to finally attach the GPU to the motherboard.It was more or less like that.… and after the additional bracket cover.Next for the installation were RAM sticks and SSD SATA drive – nothing spectacular about that – after also adding the PSU it was more or less complete.Its really nice that Thermaltake Toughpower Grand 750W PSU has detachable cables … so I could have one cable less in my case :] I generally like to build … everything – that means also building computers … but one thing always pisses me off when I build a PC – the cables from the case buttons to motherboard.Back in 2006 when I was building a gaming PC for my friend it looked more or less like that below – starting a PC with a screw DifferenceThe difference in CPU power between older AMD Ryzen 7 1700 and AMD Ryzen 7 PRO 4750GE is about 25% percent. When it comes to GPU between 5700XT 8GB and 7700XT 12GB its somewhere between 40-60% percent.There is almost zero ‘visual’ difference between the two – first the older one.… and the newer one.FreeBSDThe most important part of this article is sharing that all of these parts – especially GPU – works very well with FreeBSD with drm-kmod and x11-drivers/xlibre-xf86-video-amdgpu XLibre AMD Radeon GPU driver. After I learned how much some Red Hat people wanted to cripple and kill the X11 … I am not going back to Xorg X11 implementation … the XLibre X11 is my home … and do not even get me started on Wayland – the details about that topic are in the 200 MB RAM FreeBSD Desktop article.FirmwareAfter install and reboot I started the fwget(8) command so that all needed firmware for FreeBSD will be fetched.challenger # fwget -vTrying to match device 0x747e in class video and vendor amd with pci_video_amdTrying to match device 0x8168 in class network and vendor realtek with pci_network_realtekTrying to match device 0x24fb in class network and vendor intel with pci_network_intelNeeded firmware packages: 'wifi-firmware-iwlwifi-kmod-7000' But as it seams it was not enough as I got these boot errors on every FreeBSD system start.iwmbtfw: iwmbt_fw_read: open: /usr/local/share/iwmbt-firmware/ibt-hw-37.8.bseq: No such file or directoryiwmbtfw: main: Firmware download failed! … so I start to dig where the problem is. For a start I checked all /etc/rc.d services for iwmbtfw name.challenger # grep -r iwmbtfw /etc/etc/devd/iwmbtfw.conf: action "/usr/sbin/iwmbtfw -d $cdev -f /usr/local/share/iwmbt-firmware";challenger # ls /usr/local/share/iwmbt-firmwarels: /usr/local/share/iwmbt-firmware: No such file or directorySo the /usr/local/share/iwmbt-firmware seems to be missing but its suppose to be there …challenger # man iwmbtfw | grep firmware Firmware files are available in the comms/iwmbt-firmware port.OK … lets install the comms/iwmbt-firmware package.challenger # pkg search -o iwmbtcomms/iwmbt-firmware Intel Wireless bluetooth adaptor firmwares used by iwmbtfw(8)challenger # pkg install iwmbt-firmwareUpdating FreeBSD-ports repository catalogue...FreeBSD-ports repository is up to date.Updating FreeBSD-ports-kmods repository catalogue...FreeBSD-ports-kmods repository is up to date.Updating FreeBSD-base repository catalogue...FreeBSD-base repository is up to date.All repositories are up to date.The following 1 package(s) will be affected (of 0 checked):New packages to be INSTALLED: iwmbt-firmware: 20251111 [FreeBSD-ports]Number of packages to be installed: 1The process will require 15 MiB more space.5 MiB to be downloaded.Proceed with this action? [y/N]: y[1/1] Fetching iwmbt-firmware-20251111: 100% 4840 KiB 619.5 kB/s 00:08Checking integrity... done (0 conflicting)[1/1] Installing iwmbt-firmware-20251111...[1/1] Extracting iwmbt-firmware-20251111: 100%After reboot I never saw that error message again – so that is the needed fix.HardwareThis is the exact hardware I got with the prices I paid for it in EUR currency. Some were bought as new and some as used. TYPE EUR WHAT CASE 55 Silverstone SG13 PSU 55 Thermaltake Toughpower Grand 750W MOBO 100 ASRock B550M-ITX/ac CPU 145 AMD Ryzen 7 4750GE 8C/16T 35W TDP GPU 340 ASRock ATI Radeon 7700XT 12GB ChallengerPASTE 10 Grizzly Thermal Kryonaut 2g COOL 40 Thermalight AXP-90 X47 FAN 5 Savio BLADEX1 120mm PWM SSD 45 ADATA SU650 512GB NVME 50 Phison ESO512GYLCT-EP3-2L 512GB RAM 150 2 x 16GB Goodram DDR4 3600MHz 1.35V CL18PRICE 995 TOTALNot sure it was worth it but I did it anyway.In the mean time I also upgraded my older HP E221c FullHD monitor for HP E271i FullHD one … with additional HP soundbar mounted below the screen. To be honest – nothing fancy about that – the monitor was about 70 EUR and about 15 EUR for the soundbar.XLibre X11I installed these packages.challenger # \ pkg install -y \ drm-kmod \ xlibre \ openbox \ xterm \ xinit \ mesa-demos \ scrot \ radeontop \ screen \ lsblk \ beadm \ smartmontoolsNext I started the XLibre X11 as usual.vermaden@challenger % echo openbox > ~/.xinitrcvermaden@challenger % xinit -- -dpi 75 -nolisten tcp… and the X11 XLibre display server started as usual – but after I checked the logs … I was using the software scfb driver … and I was not in the video group – so I added myself there.challenger # pw groupmod video -m vermadenNext … I searched for amdgpu driver …challenger # pkg search -o amdgpux11-drivers/xf86-video-amdgpu X.Org amdgpu display driverx11-drivers/xlibre-xf86-video-amdgpu XLibre amdgpu display driverIts important to install the x11-drivers/xlibre-xf86-video-amdgpu one because the other one will force You to uninstall XLibre and install Xorg.Next I added the AMD Radeon X11 config.challenger # cat /usr/local/etc/X11/xorg.conf.d/card.conf Section "Device" Identifier "Card0" Driver "amdgpu" Option "TearFree" "true"EndSectionNothing fancy but works as desired.I also checked the /var/log/Xorg.0.log for details and …[2026-09-05 14:48:22] (II) LoadModule: "amdgpu"[2026-09-05 14:48:22] (II) Loading /usr/local/lib/xorg/modules/xlibre-25/drivers/amdgpu_drv.so[2026-09-05 14:48:22] (II) Module amdgpu: vendor="X.Org Foundation"[2026-09-05 14:48:22] compiled for 1.25.1.9, module version = 25.1.2[2026-09-05 14:48:22] Module class: X.Org Video Driver[2026-09-05 14:48:22] ABI class: X.Org Video Driver, version 28.1[2026-09-05 14:48:22] (II) AMDGPU: Driver for AMD Radeon: All GPUs supported by the amdgpu kernel driverYep … this is what we wanted.This is how that GPU looks like in the pciconf(8) output.challenger # pciconf -lv vgapci0vgapci0@pci0:3:0:0: class=0x030000 rev=0xff hdr=0x00 vendor=0x1002 device=0x747e subvendor=0x1849 subdevice=0x5323 vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]' device = 'Navi 32 [Radeon RX 7700 XT / 7800 XT]' class = display subclass = VGAThis is how resources usage looks like in X11 XLibre session on FreeBSD.challenger # top -b -oreslast pid: 5702; load averages: 0.08, 0.08, 0.02 up 0+00:30:16 14:35:5134 processes: 1 running, 33 sleepingCPU: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.9% idleMem: 92M Active, 101M Inact, 1512M Wired, 2056K Buf, 29G FreeARC: 141M Total, 24M MFU, 113M MRU, 388K Anon, 670K Header, 2159K Other 88M Compressed, 207M Uncompressed, 2.35:1 RatioSwap: 4096M Total, 4096M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND90382 vermaden 16 0 0 319M 136M select 6 0:01 0.00% Xorg92537 vermaden 2 0 0 50M 22M select 12 0:00 0.00% openbox 1117 vermaden 1 0 0 26M 14M select 13 0:00 0.00% xterm77479 root 1 0 0 25M 10M select 14 0:00 0.00% sshd17882 root 1 0 0 15M 4356K select 9 0:00 0.00% devd89878 vermaden 1 1 0 16M 3808K wait 5 0:00 0.00% xinit 2151 vermaden 1 0 0 14M 3500K wait 2 0:00 0.00% sh 5702 root 1 0 0 15M 3492K CPU9 9 0:00 0.00% top 1924 root 1 0 0 14M 3280K wait 4 0:00 0.00% loginThis is how the main FreeBSD /etc/rc.conf config looks like.challenger # cat /etc/rc.conf hostname="challenger.local" ifconfig_re0="inet 10.0.0.5/24 up" defaultrouter="10.0.0.1" kld_list="${kld_list} amdgpu amdtemp" syslogd_flags="-ss" sshd_enable="YES" powerd_enable="YES" dumpdev="AUTO" zfs_enable="YES"Far from fancy – just simple stuff.PowerPower measurement seems similar to older model – but slightly smaller.POWER STATE 47W IDLE without amdgpu.ko loaded 39W IDLE with amdgpu.ko loaded 45W BUSY with 16 x 100% CPU Thread(s) @ 1.4GHz 80W BUSY with 16 x 100% CPU Thread(s) @ 3.1GHzThe Turbo frequency for the AMD Ryzen 7 4750GE CPU is at 4.3GHz … but I am not sure its used … because for example a CPU in my laptop has two ‘final’ speeds shown as 1801/15000 1800/15000 and the one with additional 1 it the one with Turbo mode … but nothing like that for that AMD Ryzen 7 4750GE CPU.Also … there is only C1 state supported … which is sad challenger # sysctl dev.cpu.0dev.cpu.0.temperature: 47.0Cdev.cpu.0.cx_method: C1/hltdev.cpu.0.cx_usage_counters: 259234dev.cpu.0.cx_usage: 100.00% last 19092usdev.cpu.0.cx_lowest: C1dev.cpu.0.cx_supported: C1/1/0dev.cpu.0.freq_levels: 3100/3778 1700/1615 1400/1277dev.cpu.0.freq: 1400dev.cpu.0.%iommu: dev.cpu.0.%parent: acpi0dev.cpu.0.%pnpinfo: _HID=ACPI0007 _UID=0 _CID=nonedev.cpu.0.%location: handle=\_SB_.PLTF.C000dev.cpu.0.%driver: cpudev.cpu.0.%desc: ACPI CPUThis is how the sensors(8) output looks like on that box.challenger # sensors BATTERY/AC/TIME/FAN/SPEED ------------------------------------ dev.cpu.0.cx_supported: C1/1/0 dev.cpu.0.cx_usage: 100.00% last 10882us dev.cpu.0.freq: 1400 hw.acpi.cpu.cx_lowest: C1 powerd(8): running SYSTEM/TEMPERATURES ------------------------------------ dev.cpu.0.temperature: 47.1C dev.cpu.1.temperature: 47.1C dev.cpu.2.temperature: 47.1C dev.cpu.3.temperature: 47.1C dev.cpu.4.temperature: 47.1C dev.cpu.5.temperature: 47.1C dev.cpu.6.temperature: 47.1C dev.cpu.7.temperature: 47.1C dev.cpu.8.temperature: 47.1C dev.cpu.9.temperature: 47.1C dev.cpu.10.temperature: 47.1C dev.cpu.11.temperature: 47.1C dev.cpu.12.temperature: 47.1C dev.cpu.13.temperature: 47.1C dev.cpu.14.temperature: 47.1C dev.cpu.15.temperature: 47.1C DISKS/TEMPERATURES ------------------------------------ smart.ada0.temperature_celsius: 34.0C smart.nvme0.temperature: 39.0CNot great. Not terrible.PKGBASE UpgradeAs I installed stock 15.1-RELEASE I will now upgrade to latest 15.1-pX release available.challenger # pkg upgrade -r FreeBSD-baseUpdating FreeBSD-base repository catalogue...FreeBSD-base repository is up to date.FreeBSD-base is up to date.Checking for upgrades (53 candidates): 100%Processing candidates (53 candidates): 100%The following 52 package(s) will be affected (of 0 checked):Installed packages to be UPGRADED: FreeBSD-audit: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-autofs: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-bhyve: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-bsnmp: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-clang: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-clang-dev: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-clibs: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-clibs-dev: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-clibs-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-clibs-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-console-tools: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-ctl: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-jail: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-kernel-generic: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-kernel-generic-dbg: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-lib9p: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-lib9p-dev: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-lib9p-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-lib9p-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-libevent1: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-libevent1-dev: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-libevent1-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-libevent1-lib32: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-mtree: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-natd: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-natd-dev: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-natd-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-natd-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-ntp: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-openssl-dev: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-openssl-dev-lib32: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-openssl-lib: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-openssl-lib32: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-pmc: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-ppp: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-rescue: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-runtime: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-runtime-dev: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-runtime-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-runtime-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-src: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-src-sys: 15.1 -> 15.1p3 [FreeBSD-base] FreeBSD-syslogd: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-utilities: 15.1 -> 15.1p2 [FreeBSD-base] FreeBSD-utilities-dev: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-utilities-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-utilities-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-zfs-dev: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-zfs-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-zfs-lib: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-zfs-lib32: 15.1 -> 15.1p1 [FreeBSD-base] FreeBSD-zoneinfo: 15.1 -> 15.1p2 [FreeBSD-base]Number of packages to be upgraded: 52579 MiB to be downloaded.Proceed with this action? [y/N]: y… and it all went well. After the upgrade finished I rebooted and everything worked like a charm.OfftopicFast forward half a year later after the build happened in that dining room – my 10 years old son comes to me a month ago and says ‘Hey dad I just wrote this PC Builder game with ChatGPT do You want to play it?’ … and after I checked it I was really shocked … positively. I mean … when I was 10 years old I did not even had my AMIGA 600 … I was playing various games on Pegasus – which is a cheap Polish NES clone … I would get AMIGA 600 when I was more or less like 12 years old (speaking from foggy memories) … and I was still playing games like Sensible World od Soccer or Cannon Fodder instead of creating anything. This is how this (after many iterations with AI) PC Builder game looks like. Yes – its in Polish – but I believe its just one prompt away from making it English/Polish when needed My son also surprised me because one of the times I told him that ‘its not only ChatGPT out there – there are others like Perplexity or Claude or Gemini or … and several times he said ‘Dad I run out of tokens and just copied that I had and put that into other AI and it picked up my work and added the changes I wanted …’ – when I look at my son doing this stuff – being literally a Vibe Coder (still at the beginning of his route but still) … I feel like the schooling system is just one big fucking joke … I mean Mathematics/Physics/English/… are needed and useful … bot others? Optional to say the least … and I felt (and act accordingly) when I was in the school. Its just such a fucking waste of time to cram for some exam and forgot all that shit to get a grade.What I find funny is that my son never played a game I wrote … and I already played two games of his … I wish every parent to have the same.EOF