Scientific Computing

Live Sports Radio low-band VHF FM Audio

The company Live Sports Radio has been using low-band (channel 2-5) VHF TV channels for no-delay live FM broadcasts within sports areas. They have been issued hundreds of STAs (Special Temporary Authorizations) by the FCC under FRN 0017507716 to operate on these channels, which are normally reserved for television. The broadcasts are intended to be received by fans in stadiums and arenas, providing live commentary and updates during sporting events. They generally use separate video (to tell people how to tune in) and audio (the actual sports broadcast) channels, with the audio being transmitted as analog FM compatible with broadcast receivers capable of tuning.

Wide-band multi-digital decode chips like the NXP TEF6688 cost about $5 in production quantities and radios containing the TEF6686 retail for around $70, covering the 65 - 108 MHz range plus extensive shortwave and mediumwave AM coverage. This type of chip is too expensive for a give-away promotion radio, so less expensive receivers, using chips like the RDA5807 covering 50 MHz to 108 MHz would be used. Off the shelf radios selling in the $10 range cover 64 MHz to 108 MHz, and with slight customization I believe the vendor could obtain $5 radios covering 50 MHz to 108 MHz, which would be ideal for this application.

The ERP of the transmissions is typically STA authorized at 5 watts. They have been specified to use the Trival AD-44/CW-AH2 which is quite inefficient at these frequencies and only rated for 10 watts input power. They should consider using a more efficient transmit antenna.

Qi 2.2 charging performance

Qi 2.2 or Qi2 25W finally makes wireless charging universal for supported phones with Magnetic Power Profile (MPP). For phones / devices having built in MPP magnets - or a case with magnets - the alignment issues are solved, and the 25 watt charging speed is fast enough to remove most need for plug-in charging of phones. The Google Pixel 11, iPhone 17, and similar flagship phones natively support Qi2 25W, which allows true corded-like charging speeds with a robust magnetic interface. Qi 1.x has been widely available for over a decade, and has long been plagued in practical use with problems associated with a need for tight physical alignment, heat, and slow charging speeds. Note that while Qi2 25W devices are generally backward compatible, there are some older Qi 1.x devices including the Pixel Stand 2 that may not charge newer devices due to mechanical alignment issues.

The original 5 watt Qi was OK for overnight charging. USB-PD wired quick charging can yield charging in 30 minutes for 50%. Qi 1.3 Extended Power Profile (EPP) can yield 15 watt charge with appropriate devices and a 30 watt USB-PD power adapter. 15 to 25 watts is close enough to wired USB-PD, useful for top-off charging. Having adequate USB-PD input power (e.g. 30 watt wall power USB-PD adapter) to the Qi wireless charger is vital to meet full power charging specs.

The closer the phone (thinner the case) and better aligned the phone is, the faster and cooler it will charge. If the device is getting too hot, it will backoff the charge rate to maintain appropriate temperature. The thermal insulating effect of the phone case retains extra heat from charging.

Fortran MPI on Windows

MPI on Windows with C and Fortran is best accomplished with Windows Subsystem for Linux (WSL) using OpenMPI or MPICH, which gives full performance MPI. For x86_64 CPUs, Intel MPI library has full MPI support including the Fortran “mpi_f08” interface.

Using WSL to use MPI on Windows is especially important for ARM64 CPUs, which are not supported by Microsoft MS-MPI at the time of writing. We use WSL on Windows for MPI because the “mpi_f08” interface is not yet natively available on Windows via Microsoft MS-MPI whether with or without MSYS2. Neither OpenMPI or MPICH is buildable or available with native Windows.

To install Microsoft MPI on an x86_64 CPU machine, one can use the Windows Package Manager (winget) to install MS-MPI:

winget search Microsoft.msmpi

The MSYS2 MS-MPI library can be installed from the MSYS2 Terminal:

pacman -S mingw-w64-ucrt-x86_64-msmpi

Upon installing or updating Intel oneAPI compilers and libraries on Windows, you may experience CMake failing to find MPI for MinGW. This happens because Intel compilers put Intel MPI on the system PATH. Fix this by removing Intel MPI from the system PATH and use the Intel Compiler shell instead, which provides all the needed directories.

Identify Raspberry Pi hardware from Terminal

Especially for remote Raspberry Pis or those embedded inside a housing, it is useful to identify the hardware identity from the Terminal:

cat /sys/firmware/devicetree/base/model

Raspberry Pi 3 Model B Rev 1.2

cat /proc/cpuinfo | grep Model

Model : Raspberry Pi 3 Model B Rev 1.2

To further distill which hardware revision (like 3B vs. 3B+), manufacturer, RAM, etc. use this table from Raspberry Pi documentation to decode.

cat /proc/cpuinfo | grep Revision

Kill (force end) a program in Windows Terminal

On Linux or macOS one can kill (force end) a program in Terminal by program name using the pkill command. Windows users can similarly kill a program in Windows Terminal by program name using the taskkill command. For example, suppose that Notepad is so locked up that even using Task Manager to end the program doesn’t work - or a non-GUI way of killing a program is desired. From Windows Terminal force end a program by name like:

taskkill /IM notepad.exe

Similar to “pkill” that sends SIGTERM by default on Unix-like systems, the taskkill command above sends a request to the program to terminate gracefully. If the program does not respond, the “/F” option of “taskkill” can be used to force end a program:

taskkill /F /IM notepad.exe

This is similar to a Unix-like system SIGKILL “-9” signal, which can be sent to a program using the “pkill” command like:

pkill -9 notepad

Lower power microwave ovens can be better

Microwave oven power levels are often prominently displayed, along with their cooking volume. However, larger volume means a larger exterior case, which can waste counter space. Many people are using microwaves for a far smaller volume of food than the maximum capacity, which can lead to uneven cooking. It’s quite important to use “power level” appropriate for the type of cooking being done - reheating vs. defrosting vs. cooking frozen foods, etc. The downsides of higher power (1000 watt plus) microwave ovens include:

  • non-inverter microwave ovens are only on-off to modulate power level, and the “on” portion can be so intense that it can overcook or dry out food, especially when reheating or defrosting.
  • many people do not use the “power level” setting, and the default high power setting is way too intense for refrigerator reheating or defrosting.

A lower power say 0.7 cubic foot microwave oven with 700 watts of power can be far better suited for countertop use. For those users who don’t use the “power level” setting, 700 watts full power is like a 63% power setting of a 1100 watt inverter microwave oven, which is a more reasonable power level for reheating. It’s still beneficial to use power level setting on a 700 watt oven.

Apple Studio Display diagnose Thunderbolt connection

The Apple Studio Display has an onboard CPU with upgradable firmware and uses a Thunderbolt connection from the computer. The 2022 first generation Apple Studio Display uses Thunderbolt 3, and the 2026 second generation Apple Studio Display uses Thunderbolt 5. If Thunderbolt connection isn’t available (due to the computer or cable) then the Studio Display falls back to DisplayPort mode, which lacks features like wake from sleep.

Querying the display Thunderbolt connection is distinct but straightforward across operating systems:

Windows

Get-PnpDevice -PresentOnly | Where-Object { $_.FriendlyName -match 'Thunderbolt|USB4' } | Format-Table Status, Class, FriendlyName, InstanceId -AutoSize

The first generation Apple Studio Display will have a FriendlyName like “Thunderbolt 3(TM) Router, Apple Inc. - Studio Display”

macOS

system_profiler SPThunderboltDataType | grep -A 20 -i "Studio Display"

The Studio display should show up detailing the Thunderbolt connection.

Linux

The bolt utility is available on many desktop Linux distros:

boltctl list -a

and similar should show Thunderbolt-connected display. Alternative:

lspci | grep -iE 'thunderbolt'

Use MSVC in GitHub Actions

GitHub Actions using MSVC in the past might have used the msvc-dev-cmd action, but as of this writing it was last updated in 2023 and giving deprecation warnings. An alternative without needing an Action was based on libass project:


    steps:
    # from https://github.com/libass/libass/blob/0.17.5/.github/workflows/meson.yml#L118-L125
    - name: Setup MSVC
        run: |
        $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
        $vsPath = & $vswhere -latest -products * -property installationPath
        if (-not $vsPath) { throw "Could not find a Visual Studio installation" }
        "VS=$vsPath"
        "VS=$vsPath" >> $env:GITHUB_ENV

This works for ARM64 and x64 builds, example

CMake GCC superbuild

This CMake project builds GCC and high level GCC prerequisites such as GMP. This avoids needing to manually download and configure each project. The CMake GCC superbuild assumes fundamental prerequisites such as libc, autotools, make, CMake are present. The 3-stage compiler bootstrap is enabled to help ensure a working, performant GCC.

Alternative: Homebrew GCC pin script.