I’m a newcomer to the Home Assistant world, I’m currently in the process of migrating from a Raspberry Pi 3 to a mini PC, specifically a refurbished Dell OptiPlex. I’ve noticed that these refurbished PCs do not come bundled with built-in Wi-Fi and Bluetooth, even in Amazon or backmarket.co.uk but instead include USB dongles for these functionalities.
I’m curious to understand the reasoning behind this choice?
And any problem with using USB dongles when setting up proxmox?
Thanks in advance
The OptiPlex range are business class PCs, so they were designed to be connected to a wired ethernet network.
In general, it is considered bad practice to connect a server (or a PC acting as a server) using Wi-Fi. Also, it adds additional complexity to the configuration, whereas Ethernet is plug & play.
Some of your choices on these intel or amd hardware devices as your Home Assistant server may depend on your choice of running the HAOS route (an all in package of operating system and Home Assistant) or installing a generic linux on the hardware (for example Debian or Ubuntu) and then adding Home Assistant as for example a Docker application.
As I understand it, the specific hardware device support may be more picky going the HAOS route. I’ve only gone down the generic Linux route for my HA servers, and have been very happy. I’ve not used Dell mini PC’s but have used HP mini micros with good success. I’ve used both PCI and USB devices with these, there are quirks with some PCI devices and some mini micro PC’s, do do some Googling on your specific model. I’ve not seen this myself, however do be aware that some have found some RF interence issues with some USB devices attached directly to USB 3 ports on some small devices. Again, do some google on your specific model and have a couple USB 2 (only) cables and small hubs available.
Going down the Proxmox route, I run HA within a Ubuntu VM in Docker via Proxmox. I’ve not had any issues with USB devices routed into HA. However, USB under Proxmox by itself can be a bit daunting to setup and keep running. Add, docker in a VM under this and I do recommend including plenty of
I wrote the bash script below to help me keep track of the too many USB devices I have on my Proxmox nodes:
#!/usr/bin/env bash
#
# my-usb.sh
# 202304121418
# get usb device info needed for vm mapping in promox
# based on this post:
# https://help.electronic.us/support/solutions/articles/44001312589-how-to-get-the-list-of-usb-devices-without-gui-and-kernel-module-on-linux-
# not a lot of help here:
# https://pve.proxmox.com/wiki/USB_physical_port_mapping
# https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines
#
padding="...................."
for device in $(ls /sys/bus/usb/devices/*/product)
do
dir=${device%product*}
path=${device#*devices\/}
path=${path%\/product*}
printf "%s%s : " "$path" "${padding:${#path}}"
#echo -n "${path} : "
if [ -f "${dir}manufacturer" ]
then
manufacturer=$(cat ${dir}manufacturer)
else
manufacturer=""
fi
echo -n "${manufacturer} "
if [ -f "${dir}product" ]
then
product=$(cat ${dir}product)
else
product=""
fi
echo -n "${product} "
if [ -f "${dir}idProduct" ]
then
idproduct=$(cat ${dir}idProduct)
else
idproduct=""
fi
echo -n "${idproduct} "
if [ -f "${dir}idVendor" ]
then
idvendor=$(cat ${dir}idVendor)
else
idvendor=""
fi
echo -n "${idvendor} "
if [ -f "${dir}serial" ]
then
serial=$(cat ${dir}serial)
else
serial=""
fi
echo -n "${serial} "
#cat ${dir}product ${dir}idProduct ${dir}idVendor ${dir}serial | tr '\n' ' '
echo " "
done
example output:
root@pve00:~# my-usb.sh
1-2.1.1.1........... : Realtek RTL2838UHIDIR 2838 0bda 33333333
1-2.1.1.3........... : Realtek RTL2838UHIDIR 2838 0bda 11111111
1-2.1.1.4.1......... : wch.cn ble analyzer 8009 1a86
1-2.1.1.4.3......... : wch.cn ble analyzer 8009 1a86
1-2.1.1.4.4......... : wch.cn ble analyzer 8009 1a86
1-2.1.1.4........... : USB HUB 8091 1a86
1-2.1.1............. : GenesysLogic USB2.1 Hub 0610 05e3
1-2.1.2.1........... : Adrian Studer dAISy AIS Receiver 0b03 16d0 B804924718002300
1-2.1.2.2........... : Realtek Bluetooth Radio 877b 0bda 00E04C239987
1-2.1.2............. : GenesysLogic USB2.1 Hub 0610 05e3
1-2.1.3.1........... : Rainforest RFA-Z106-RA-PC RAVEn v2.3.21 8a28 0403
1-2.1.3.2........... : Dr Mirow GammaScout USB d678 0403 GSNJR21O
1-2.1.3.4........... : Broadcom Corp BCM20702A0 21e8 0a5c 000272DC4C09
1-2.1.3............. : GenesysLogic USB2.1 Hub 0610 05e3
1-2.1.4.1........... : USB Serial 7523 1a86
1-2.1.4.2........... : TubesZB 7523 1a86 971207DO
1-2.1.4.3........... : ITead Sonoff Zigbee 3.0 USB Dongle Plus ea60 10c4 5cf90e3b6229ec119a9a6d7840c9ce8d
1-2.1.4.4........... : Silicon Labs CP2102 USB to UART Bridge Controller ea60 10c4 0001
1-2.1.4............. : GenesysLogic USB2.1 Hub 0610 05e3
1-2.1............... : GenesysLogic USB2.1 Hub 0610 05e3
1-2.3.1.1........... : wch.cn CH583 5020 0416
1-2.3.1.2........... : USB Serial 7523 1a86
1-2.3.1.3........... : Dangerous Prototypes CDC Test fd08 04d8 00000001
1-2.3.1.4........... : Realtek USB 10/100/1000 LAN 8153 0bda 000001
1-2.3.1............. : GenesysLogic USB2.1 Hub 0610 05e3
1-2.3............... : GenesysLogic USB2.1 Hub 0610 05e3
1-2.4.2............. : SONiX USB Device 7403 0c45
1-2.4............... : USB 2.0 Hub 0101 1a40
1-2................. : ASUS TEK. ASM107x 2074 174c
1-3.3............... : VIA Labs, Inc. USB2.0 Hub 2822 2109 000000001
1-3.4............... : VIA Labs, Inc. USB2.0 Hub 2822 2109 000000001
1-3................. : VIA Labs, Inc. USB2.0 Hub 2822 2109 000000001
1-4................. : AsusTek Computer Inc. AURA LED Controller 19af 0b05 9876543210
1-5................. : Generic External 0840 13fd 523336383647505A32363832
1-7................. : mvsilicon USB MIC Device 1234 aa98 mvsilicon20200924
2-3.3............... : VIA Labs, Inc. USB3.1 Hub 0822 2109 000000001
2-3.4............... : VIA Labs, Inc. USB3.1 Hub 0822 2109 000000001
2-3................. : VIA Labs, Inc. USB3.1 Hub 0822 2109 000000001
2-7................. : JMicron External 0562 152d 010017630DF7
2-9.1.1............. : GenesysLogic USB3.1 Hub 0626 05e3
2-9.1.2............. : GenesysLogic USB3.1 Hub 0626 05e3
2-9.1.3............. : GenesysLogic USB3.1 Hub 0626 05e3
2-9.1.4............. : GenesysLogic USB3.1 Hub 0626 05e3
2-9.1............... : GenesysLogic USB3.1 Hub 0626 05e3
2-9................. : ASUS TEK. ASM107x 3074 174c
usb1................ : Linux 6.2.16-11-bpo11-pve xhci-hcd xHCI Host Controller 0002 1d6b 0000:00:14.0
usb2................ : Linux 6.2.16-11-bpo11-pve xhci-hcd xHCI Host Controller 0003 1d6b 0000:00:14.0
I run Home Assistant container on a Dell Optiplex - using LAN connection (not wifi). As pointed out, these were business machines so did not include all the options you would normally get in a consumer desktop. You can add a cheap wifi card easy enough, but LAN is ideal. The machine opens up easily and is pretty easy to work on- believe there is a slot to add a mini wifi/bluetooth card int the machine if you don’t want to tie up a USB slot.
I’m running the container install - I would recommend either Home Assistant container or a VM. Looks like you want the VM with Proxmox route - I’m not as familiar with that myself but there’s a lot of info on here. It would be a huge waste of the machine’s resources to just run HAOS on it. With the other install types, including Proxmox, you have many more options to run a variety of different programs alongside Home Assistant.
I have Ubuntu as the host OS (actually still have dual boot for Windows but almost never use Windows on the machine unless I am updating USB firmware that works better in windows)
I’m running Shinobi NVR (granted its only 3 cameras recording 24/7 so not an "intense"setup). Most other programs run in Docker, using Portainer as the UI to manage everything. This includes adguard, esphome, homeassistant container, node-red, swag/nginx, wireguard, zigbee2mqtt, and zwavejsui.
I’ve found docker to be much more stable with USB passthrough vs a VM. I’ve rarely had issues with USB sticks passed to docker on this machine.
First of all, thanks to all the people who replied and understand business class PC wo wifi.
For the mini PC, I’m going to install Proxmox so that it can run both VMs and container apps. Regarding the WiFi and wired connections, I have a requirement that all the VMs or containers can choose WiFi, LAN, or both for different purposes.
For the installation of HA, I prefer to install HAOS as a VM for the following reasons:
Since there is already an instance of HAOS on a Raspberry Pi 3, I believe the migration will be much easier.
Home Assistant is a relatively critical application, so I prefer HAOS over Docker. I feel more confident in handling errors or troubleshooting problems with HAOS compared to Docker.
Please share your thoughts on supporting or maintaining HAOS, HA on Linux, or HA with Docker.
I think you’ll be fine on the path you are going on with Proxmox - but just to be clear, all installations of Home Assistant with the exception of a core installation in a python VENV, run on docker in some way. Its just that in HAOS, the supervisor (itself a docker container) manages Home Assistant and the addons for you, so as the end user, you don’t even realize docker is there.
To me, running a docker containerized environment like HAOS in a VM is not efficient, but your machine should be able to handle that no problem if that is the path you want to go. It will be less painful of a migration as well, like you pointed out, from the HOAS on RPI3.
This thread is a little older but has a great deal of discussion about Proxmox