Serial number to uppercase, more info in Avahi

This commit is contained in:
Maxim Devaev 2024-09-08 01:35:11 +03:00
parent 508d5fe606
commit aa1ca3b329
2 changed files with 23 additions and 9 deletions

View File

@ -70,8 +70,8 @@ class HwInfoSubmanager(BaseInfoSubmanager):
cpu_temp, cpu_temp,
mem, mem,
) = await asyncio.gather( ) = await asyncio.gather(
self.__read_dt_file("model"), self.__read_dt_file("model", upper=False),
self.__read_dt_file("serial-number"), self.__read_dt_file("serial-number", upper=True),
self.__read_platform_file(), self.__read_platform_file(),
self.__get_throttling(), self.__get_throttling(),
self.__get_cpu_percent(), self.__get_cpu_percent(),
@ -108,11 +108,12 @@ class HwInfoSubmanager(BaseInfoSubmanager):
# ===== # =====
async def __read_dt_file(self, name: str) -> (str | None): async def __read_dt_file(self, name: str, upper: bool) -> (str | None):
if name not in self.__dt_cache: if name not in self.__dt_cache:
path = os.path.join(f"{env.PROCFS_PREFIX}/proc/device-tree", name) path = os.path.join(f"{env.PROCFS_PREFIX}/proc/device-tree", name)
try: try:
self.__dt_cache[name] = (await aiotools.read_file(path)).strip(" \t\r\n\0") value = (await aiotools.read_file(path)).strip(" \t\r\n\0")
self.__dt_cache[name] = (value.upper() if upper else value)
except Exception as err: except Exception as err:
get_logger(0).error("Can't read DT %s from %s: %s", name, path, err) get_logger(0).error("Can't read DT %s from %s: %s", name, path, err)
return None return None

View File

@ -50,16 +50,21 @@ fi
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source <(dos2unix < /boot/pikvm.txt) source <(dos2unix < /boot/pikvm.txt)
# shellcheck disable=SC1091
source /usr/share/kvmd/platform || true
rw rw
# ========== First boot and/or Avahi configuration ========== # ========== First boot and/or Avahi configuration ==========
make_avahi_service() { make_avahi_service() {
local _base
local _serial local _serial
_serial=$(tr -d '\0' < /proc/device-tree/serial-number || echo "0000000000000000") local _platform
local _model _base=$(tr -d '\0' < /proc/device-tree/model || echo "Unknown base")
_model=$(tr -d '\0' < /proc/device-tree/model || echo "Unknown model") _serial=$( (cat /proc/device-tree/serial-number || echo "0000000000000000") | tr -d '\0' | tr '[:lower:]' '[:upper:]')
_platform="$PIKVM_MODEL-$PIKVM_VIDEO-$PIKVM_BOARD"
mkdir -p /etc/avahi/services mkdir -p /etc/avahi/services
cat <<end_of_file > /etc/avahi/services/pikvm.service cat <<end_of_file > /etc/avahi/services/pikvm.service
<?xml version="1.0" standalone='no'?> <?xml version="1.0" standalone='no'?>
@ -72,8 +77,12 @@ make_avahi_service() {
<txt-record>path=/</txt-record> <txt-record>path=/</txt-record>
<txt-record>protocol=https</txt-record> <txt-record>protocol=https</txt-record>
<txt-record>description=PiKVM Web Server</txt-record> <txt-record>description=PiKVM Web Server</txt-record>
<txt-record>model=$PIKVM_MODEL</txt-record>
<txt-record>video=$PIKVM_VIDEO</txt-record>
<txt-record>board=$PIKVM_BOARD</txt-record>
<txt-record>base=$_base</txt-record>
<txt-record>serial=$_serial</txt-record> <txt-record>serial=$_serial</txt-record>
<txt-record>model=$_model</txt-record> <txt-record>platform=$_platform</txt-record>
</service> </service>
<service> <service>
<type>_https._tcp</type> <type>_https._tcp</type>
@ -81,8 +90,12 @@ make_avahi_service() {
<txt-record>path=/</txt-record> <txt-record>path=/</txt-record>
<txt-record>protocol=https</txt-record> <txt-record>protocol=https</txt-record>
<txt-record>description=PiKVM Web Server</txt-record> <txt-record>description=PiKVM Web Server</txt-record>
<txt-record>model=$PIKVM_MODEL</txt-record>
<txt-record>video=$PIKVM_VIDEO</txt-record>
<txt-record>board=$PIKVM_BOARD</txt-record>
<txt-record>base=$_base</txt-record>
<txt-record>serial=$_serial</txt-record> <txt-record>serial=$_serial</txt-record>
<txt-record>model=$_model</txt-record> <txt-record>model=$_platform</txt-record>
</service> </service>
</service-group> </service-group>
end_of_file end_of_file