Saturday, July 18, 2026

DRM is unlikely to replace analog AM broadcast on HF band

I learned a bit about DRM broadcasting on HF band recently. I don't think it will succeed in replacing AM shortwave broadcast.

DRM is a digital broadcast scheme. It features 16/64QAM, OFDM, xHE-AAC. A DRM station usually takes up 10kHz bandwidth in HF band. It may carrier one audio program and some auxiliary data (text, program guide, emergency warning, etc).

Analog AM is good enough for voice. DRM can provide FM radio like audio quality on shortwave band. However, most shortwave stations are operated by governments (e.g. BBC, VOA, CRI) or religious groups (e.g. FEBC). They usually have voice programs. AM's ~4kHz audio bandwidth is good enough for this use case. Another use case for shortwave radio is emergency. Analog modulation also works well for this purpose.

Complexity and cost. An analog AM receiver simply need LO, mixer, filters, envelop detector, audio amplifier. A DRM receiver must have a DSP that can demodulate OFDM, a xHE-AAC decoder, and a micro-controller. All these adds to the cost and power consumption of DRM receivers. I could not find any DRM receiver for less than 1000 CNY in China. I tried listening to DRM on SDR, the effort is not trivial. I also experimented with the CML DRM1000 module, which I do not recommend.

Lastly, mass media broadcasting itself is going downhill IMO. The mobile Internet is capable of carrying high quality audio and video streams from independent "creators". I have not subscribed to cable TV for years. 


  

Saturday, June 27, 2026

7z benchmark without hyperthreading on i5-1240P

Conclusion

SMT Off (12 Threads)    SMT On (16 Threads)    The Delta
Total Score (Tot)    27,967 MIPS    40,205 MIPS    +43.7% with SMT On
Avg Compression    35,226 MIPS    51,059 MIPS    +44.9% with SMT On
Avg Decompression    20,708 MIPS    29,351 MIPS    +41.7% with SMT On
Max 1T Freq (Single Core)    ~4354 MHz    ~4379 MHz    Virtually identical

Benchmark without hyperthread 

7-Zip 26.01 (x64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-04-27

 64-bit locale=en_US.UTF-8 Threads:16 OPEN_MAX:4096


Compiler:  ver:16.1.1 20260515 (Red Hat 16.1.1-2) GCC 16.1.1 : SSE2

Linux : 7.0.12-201.fc44.x86_64 : #1 SMP PREEMPT_DYNAMIC Thu Jun 11 01:30:16 UTC 2026 : x86_64

PageSize:4KB HPS:2MB THPS:2MB THP:madvise hwcap:2 hwcap2:2

12th Gen Intel(R) Core(TM) i5-1240P

(906A3)  (LP)


1T CPU Freq (MHz):  3093  3992  3707  4310  4347  4325  4354

6T CPU Freq (MHz): 578% 3288   574% 3285  

12T CPU Freq (MHz): 973% 2594   838% 2248  


RAM size:   15676 MB (LP),  # CPU hardware threads:  12 / 16 : FF55

RAM usage:   2669 MB (LP),  # Benchmark threads:     12


                       Compressing  |                  Decompressing

Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating

         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS


22:      59717   976   5951  58093  |     304017  1133   2288  25923

23:      29297   934   3196  29851  |     247248  1138   1880  21388

24:      27530   927   3192  29601  |     208846  1104   1659  18325

25:      20460   933   2504  23361  |     193263  1125   1528  17195

----------------------------------  | ------------------------------

Avr:     34251   943   3711  35226  |     238344  1125   1839  20708

Tot:            1034   2775  27967  




With hyperthreading

1T CPU Freq (MHz):  3305  4204  4333  4347  4367  4379  4378

8T CPU Freq (MHz): 769% 3238   761% 3162  

16T CPU Freq (MHz): 1041% 2098   1558% 3073  


RAM size:   15676 MB (LP),  # CPU hardware threads:  16

RAM usage:   3559 MB (LP),  # Benchmark threads:     16


                       Compressing  |                  Decompressing

Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating

         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS


22:      70657  1369   5022  68735  |     432269  1452   2538  36860

23:      49188  1285   3901  50117  |     404803  1444   2425  35018

24:      40186  1344   3215  43208  |     320151  1466   1916  28091

25:      36937  1366   3087  42174  |     195977  1550   1125  17436

----------------------------------  | ------------------------------

Avr:     49242  1341   3806  51059  |     338300  1478   2001  29351

Tot:            1409   2904  40205 

 

 

 

Sunday, May 3, 2026

Allow sudo to use fingerprint auth when laptop lid is open on Fedora 44

I want to achieve the following on Fedora 44 on Thinkpad x1c gen 10,

  • fingerprint auth is allowed in sudo
  • fingerprint auth not allowed anywhere else
  • fingerprint auth is skipped when laptop lid is closed.

I did the following

check current authselect config

authselect current

If the result contains  with-fingerprint, disable it

sudo authselect disable-feature with-fingerprint

cat /etc/pam.d/system-auth to verify that fprintd is not listed

This disables fingerprint auth for everything

Then add these two lines in /etc/pam.d/sudo, immediately below the #%PAM-1.0 line

auth [success=ok default=1] pam_exec.so quiet quiet_log /bin/grep -q open /proc/acpi/button/lid/LID/state
auth   sufficient   pam_fprintd.so

This two lines enables fingerprint auth only when the laptop lid is open.

Lastly, run fprintd-enroll to enroll fingerprints.

 

References

https://www.man7.org/linux/man-pages/man8/pam_exec.8.html

https://www.man7.org/linux/man-pages/man5/pam.conf.5.html 

 

 

 

 

 

Friday, March 27, 2026

Block guest WiFi clients from reaching other hosts on LAN

On Openwrt 25.12, I set up a guest wifi bridge onto LAN,

config wifi-iface 'wifinet2'
    option device 'radio1'
    option mode 'ap'
    option ssid 'xxxx'
    option encryption 'sae-mixed'
    option key 'xxxxxxx'
    option ocv '0'
    option ieee80211w '2'
    option ifname 'wifi-guest'
    option network 'lan'

However, I want to block hosts on the guest wifi from reaching other hosts on br-lan except the router.

I used the following config.

in  /root/guest_isolate.nft 

table bridge guest_isolation
delete table bridge guest_isolation

table bridge guest_isolation {
  chain forward {
    type filter hook forward priority 0; policy accept
    iifname "wifi-guest" counter drop
  }
}

in /etc/config/firewall

config include
        option type 'nftables'
        option path '/root/guest_isolate.nft'
        option position 'ruleset-post'

kmod-nft-bridge package must be installed.

Tuesday, February 10, 2026

Tecsun M-801 media player review

I acquired a used Tecsun M-801 music player.

The good,

  • Built-in FM antenna with decent reception.
  • User replaceable 18650 battery.
  • USB-C port supports changing and acting as a USB speakerphone.
  • It can record audio into a TF card.
  • The built-in mic can be used for answering phone calls via bluetooth.
  • It exposes its battery level to phones through bluetooth.
  • The audio player can resume from previous location within a file. 

The bad,

  • The recorded audio is in MP2 format at 160 kbps instead of MP3.
  • Does not play AAC audio files. 
  • The only knob has two functions. I prefer a dedicated volume knob.
  • The USB-C port is not implemented properly to work with USB-C adapters. 
  • No AM reception. 
  • The speaker has a noticeable noise floor.
  • Volume is not synced to phone in bluetooth mode. 

 

Wednesday, October 8, 2025

Ricoh GRIV camera review

 I used a GRIV for three days. Here is my take.

The good,

  • Very sharp lens
  • Lightweight and compact body
  • 50GB internal storage
  • The RAW format is DNG.
  • Crisp display
  • UI is clean and intuitive.
  • Built-in ND filter
  • Superb image stabilization

The bad,

  • Video recording is limited to 1080p at 60fps.
  • Does not support HEIF.
  • Display is fixed. It does not flip or articulate.
  • Only supports UHS-I microSD card.

The ugly,

The camera freezes after taking dozens of pictures on a moving vehicle. I ruled out SD card incompatibility because I did not insert one. I had to pull out the battery to reboot the camera. This is why I only kept it for three days.

 


 

 

Monday, April 14, 2025

Making UEFI bootable Win 11 USB drive on Linux

I searched for making bootable win 11 drive on Linux. Many results point to WoeUSB. I read WoeUSB's code and found out I can do it manually.

Steps,

  1. Format the USB drive with MBR.
  2. Create two partitions, one 10MB, the other bigger than Windows installer ISO.
  3. Write this image into the first partition. 
  4. Format the second partition in NTFS/exFAT.
  5. Copy everything inside the ISO into the second partition.
  6. Umount the second partition.
  7. Remove USB drive.

Monday, March 31, 2025

JetKVM review

Update on Apr 29, 2025

The device suddenly stopped working. The screen went blank. The case got very hot. I presume it had a short circuit. I emailed JetKVM but have no receive a response.

###

I received a JetKVM last week. Here is my take.

the good,

  • the metal casing feels nice
  • Web UI is clean, responsive, and intuitive. 

the bad,

  • Although it supports IPv6 SLAAC, the IPv6 address is not shown anywhere in the Web UI or on-device screen. I had to enable developer mode and SSH into it to see the address.
  • Virtual media does not support loading media from the browser yet.
  • It uses a mini-HDMI port instead of a regular one.
  • Its only USB-C port is for both power and data (HID and storage emulation). So it comes with a special USB-C cable that splits a USB-C port to a data port and a power port.
  • It does not support WiFi. Good for security but bad for convenience.
  • Its irregular form factor makes it difficult to mount on a rack.

I recommend it at a price of 88 USD. But if you can wait, GL.iNet's GL-RM1 might be a better choice.



Monday, February 17, 2025

Block clients of a specific AP from accessing WAN on OpenWrt 25.12

I updated this post to target the latest Openwrt 25.12 release. 

I wrote a post on blocking clients of AP from Internet access on Mikrotik router a while ago at https://jim-think.blogspot.com/2023/04/block-internet-access-for-iot-devices.html

I have become dissatisfied with MikroTik's WiFi compatibility. So I switched to Openwrt.

Steps

0. apk add kmod-nft-bridge

1. Add a WiFi interface for restricted devices.

config wifi-iface 'wifinet2'
    option device 'radio1'
    option mode 'ap'
    option ssid '<redacted>'
    option encryption 'psk2+ccmp'
    option key '<redacted>'
    option ocv '0'
    option network 'lan'   // bridged to lan
    option ieee80211w '1'
    option ifname 'no-internet'  // remember this

 

2. Create a file at  /root/no_internet.nft with following contents.

table bridge filter
delete table bridge filter
table bridge filter {
    chain prerouting {
        type filter hook prerouting priority dstnat; policy accept;
        iifname "
no-internet" mark set 0x1984
    }
}

3. Add firewall rules in /etc/config/firewall

config rule
    option name 'block-no-internet'
    list proto 'all'
    option src 'lan'
    option dest 'wan'
    option target 'REJECT'
    option mark '0x1984'

config include
    option    type        'nftables'
    option    path        '/root/no_internet.nft'
    option    position    'ruleset-post' 

4. Reboot or run service firewall restart.

5. Run nft list ruleset to verify. 

References

https://wiki.nftables.org/wiki-nftables/index.php/Setting_packet_metainformation#packet_mark

https://openwrt.org/docs/guide-user/firewall/fw3_configurations/bridge 

https://openwrt.org/docs/guide-user/firewall/firewall_configuration#includes_2203_and_later_with_fw4

Sunday, January 26, 2025

Viltrox 28mm F4.5 E mount AF lens review

I have been using a Viltrox AF 28mm F4.5 FE on Sony A6400 for a while. Here is my review.

Good,

  • extremely thin and lightweight
  • auto focus
  • AF motor is quiet
  • affordable
  • built-in lens cover

Bad,

  • Aperture is fixed at f/4.5 which is too wide for landscape.
  • No manual focus mode
  • No filter attachment threads
  • Prominent flare
  • AF motor can be heard on video recordings
  • No optical stabilization (not unexpected given the price)


Monday, January 20, 2025

Remeber screen brightness in Fedora

My laptop's screen is always at the lowest brightness when resuming from sleep. It is very annoying. I found a fix.

 

Create an executable file at /usr/lib/systemd/system-sleep/brightness with following contents,


#!/usr/bin/sh

case $1 in
    pre) cp /sys/class/backlight/intel_backlight/brightness  /tmp/saved_brightness ;;
    post) cp /tmp/saved_brightness /sys/class/backlight/intel_backlight/brightness  ;;
esac


Friday, January 10, 2025

2022 Civic EX Canadian version review

Good,

  • It has heated front seats and heated steering wheel.
  • Handling is agile.
  • Good fuel efficiency.
  • It has remote start without subscriptions.
  • The car does not seem to be connected to cellular networks.
  • AC control has physical knobs. 
  • It prompts me to add windshield washer fluid when the level is low.

Bad,

  • Lane centering does not work as well as Toyota. It feels jerky.
  • No wireless phone projection.
  • No auto-dimming rear view mirror option.
  • No Aux audio input port.

Ugly

  • Steering wheel controls are complicated. It has toggles, wheels, and buttons.
  • Seating position is low. I can see part of the hood even at the highest position.
  • Only the two front door windows support one-touch up/down.
  • Honda issued a recall for "sticky steering". But all three dealerships nearby ran out of parts and could not repair the recall.


Wednesday, December 11, 2024

Switch Fedora 41 from GRUB2 to systemd-boot

Fedora uses GRUB2 boot loader by default. I want to switch to systemd-boot. Below are the steps. All executed with sudo.

Run ls /sys/firmware/efi to ensure the system was booted in EFI mode. Stop if the path does not exist.

Run bootctl status to confirm that system-boot was not the boot loader.

Run df -h to ensure the EFI system partition's free space is larger then /boot's used space.

dnf install -y systemd-boot

mkdir /efi

nano /etc/fstab
Move the /boot/efi mount point to /efi. Remove the line of /boot.

systemctl daemon-reload

umount /boot/efi

umount /boot

mount /efi

mkdir /efi/$(cat /etc/machine-id)

bootctl install

cat /proc/cmdline | cut -d ' ' -f 2- | tee /etc/kernel/cmdline

nano /etc/kernel/install.conf. Put these two lines
BOOT_ROOT=/efi
layout=bls

kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz 

dnf reinstall kernel-core 

Reboot. Run bootctl status to confirm that system-boot is the boot loader.

If everything works, delete grub.

rm /etc/dnf/protected.d/{grub,shim}*

dnf remove grubby grub2\* memtest86\* 

 


 



Monday, October 7, 2024

Forward SMS from Android to iPad

The goal is to forward short messages received on a Pixel 4 running Android 12 to an iPadOS 18 device over the Internet.

  1. Install Bark on iPad.
  2. Follow this tutorial to set up a URL like https://api.day.app/<some_random_chars>/. The random chars are the push key.
  3. Install SMS to URL Forwarder on Android. The app can be downloaded from F-Droid.
  4. Add an entry in the SMS to URL forwarder app
  5. Set sender to *
  6. Set webhook URL to https://api.day.app/<some_random_chars>/
  7. Set the JSON content to {"title": "%from%", "body": "%text%"}
  8. Click test
  9. Save the entry if iPad receives a notification.


Sunday, July 21, 2024

Extend a BTRFS filesystem on LUKS protected partition

My computer's root partition is a BTRFS sub-volume inside of a LUKS encrypted partition. Its space is running low. Fortunately the SSD has unallocated space after the LUKS partition.

Steps,

  1. run parted /dev/nvme0n1
  2. type resizepart to resize the LUKS partition
  3. type q to quit
  4. run cryptsetup resize {name_of_the_dm} -v to grow the LUKS volume.
  5. run btrfs filesystem resize max /

Credits

  • https://blog.tinned-software.net/increase-the-size-of-a-luks-encrypted-partition/
  • https://btrfs.readthedocs.io/en/latest/btrfs-filesystem.html

Friday, July 12, 2024

2024 Honda Civic sport test drive impression

Good,

  • Interior materials feel nicer than competitors like Corolla.
  • Good driving dynamics
  • It has proximity key entry and key-less start. 
  • And it can lock doors automatically when you walk away.
  • It has adaptive cruise control and blind spot indicators.
  • Key fob is compact and lightweight.
  • The rear view camera has dynamic guidelines.
  • Physical AC knobs are easy to use.
  • The whole interior is black, including the headliner.
  • It does not have a sun-roof.
  • The infotainment system has physical buttons and volume knobs.
Meh
  • No sun-glass holder in the sport trim.
  • No auto-dimming rear view mirror.
  • Fully manual driver seat.
  • No wireless phone screen projection.
  • 2.0L NA engine does not have much power.
Bad
  • It has auto start-stop.
  • The steering wheel controls are confusing. It has buttons, wheels, and toggles. See the picture below.
  • The 7-inch infotainment screen is small and has a very wide bezel.
  • The 7-inch infotainment screen is dim even at the highest brightness.
  • The MSRP of 26k is expensive for such a compact sedan.
  • The salesperson was extremely rude as if I should beg him for the car.
  • The dealer has a $500 mark-up.
  • The dealer does not have any 2025 models.





Saturday, July 6, 2024

Qodosen DX-286 portable radio review

I bought a Qodosen DX-286 portable radio at https://www.amazon.com/dp/B0D3V3H356 for 80 USD + tax.

I compared it with a tecsun PL330 last evening.

Good,

  • The tiny speaker is surprisingly loud and deep. Better than tecsun PL330.
  • Stellar performance in FM band. It clearly received 38 stations without pulling out the antenna. While tecsun got only 19.
  • Good MW performance. It picked up 15 stations. Tecsun got 12 stations.
  • It decodes FM RDS/RBDS.
  • It uses a widely available 18650 battery and can charge the battery through USB.
  • The build quality feels nice.
  • The tuning knob has good tactile feedback.
  • It is extremely compact.
  • It has many powerful settings.
  • The LCD display has good viewing angle and even backlight.
Meh
  • It does not receive SSB or air band. But I have other radios for these.
  • It is power hungry thanks to the TEF6686 chip. The quiescent current in FM band is 200 mA.
  • The 18650 battery is not included in the package.
  • I wish the RDS info could be displayed on a dot-matrix with more characters.
  • Buttons serve multiple functions. I must not lose the user manual.
  • The English user manual has a few translation errors.
  • The noise floor in FM is higher than PL330's.
  • The radio mutes for ~100ms between tuning, probably due to DSP.
  • The buttons do not have a bump on 5, making it hard to use in the dark.
  • It takes ~1 sec to boot.
Bad
  • The "world" clock setting is counter-intuitive. IMO, the correct order is to set UTC time and then choose the local timezone.
  • The kickstand feels flimsy.
  • Charging port is micro USB, not type C. 
  • The volume control is weird. The volume knob is a potentiometer. The MCU reads its output to set the actual volume.
  • The carrying case is a waste of plastic.



Note that DX-286 is an improved version of SR-286.

Friday, July 5, 2024

2023 Nissan Rogue SL review

I rent a 2023 Nissan Rogue SL FWD for a week on a trip. Here is my review.

Good,

  • The engine is quiet even though it has only three cylinders. 
  • The engine has enough power to haul four adults.
  • It has good fuel economy. I averaged about 28 mpg.
  • Handling is agile among all SUV that I have driven.
  • It has features like,
    • powered lift gate
    • comfortable powered seats
    • wireless phone screen projection
    • three zone AC
    • four USB ports for charging
    • proximity key entry
    • adaptive cruise control with lane centering assist
    • parking sensors
    • 360 degree camera
  • The instrument cluster has two analogue gauges and a LCD display. The trip computer is easy to use.

Meh

  • The KR15DDT engine has complaints of reliability issues.
  • Only the driver's window supports "one touch" up and down.
  • I don't like the gear selector. I often shift into manual mode by accident. 
  • The lane centering feature does not work well on curvy roads.
  • The driver seat's lumbar support cannot be adjusted vertically.

Bad

  • Proximity locking and unlocking uses the same button on the door handle. So it is hard to tell if the door has been locked or unlocked.
  • Adaptive cruise control sometimes (once every other day) disengages on its own.
  • There is no audible alarm when the car is moving and a door is unlocked.

 

Thursday, June 20, 2024

2024 Corolla Cross review

I test drove a 2024 Corolla Cross XLE. The verdict is to not buy one. Here is why.

  • The interior is the almost same as my 2020 corolla sedan.
  • The cabin is not much roomier than corolla sedan.
  • It has auto start-stop.
  • The infotainment screen still cannot display CJK chars correctly.
  • Very slow acceleration.
  • The engine requires hard to find 0w8 oil.
  • Much more body roll when cornering than corolla sedan.
  • Suspension is too soft.
The corolla cross did have some nice things,
  • JBL sound system.
  • improved ADAS (TSS 3.0).
  • Wireless carplay.
  • AWD
But it is more expensive ($4000) than a similarly equipped corolla sedan.


Monday, June 10, 2024

2023 Hyundai Ioniq 5 EV review

I drove a 2023 Hyundai Ioniq 5 on a weekend trip between Sacramento and Truckee.

Good things,

  • Fast acceleration
  • Quieter than my Corolla sedan
  • Spacious cabin
  • Plenty USB charging ports
  • Powered lift gate
  • Powered folding side mirrors
  • Auto brake hold is always enabled. 
  • Audio quality is good.
  • Handling is better than similar ICE SUV.
  • It notifies me when it is stopped and the vehicle ahead drives away.

Meh,

  • Range is not as good as similar ICE cars, especially when going uphill.
  • The infotainment screen is also too big with the left edge blocked by the wheel.
  • The rear turn signals are red. 
  • Regenerative braking is too aggressive. I find it hard to modulate the pedal to maintain a speed on local roads.
  • I don't like the toggles on the steering wheel.

Bad things,

  • The LCD instrument cluster has a white background in the day, lowering contrast.
  • The instrument cluster puts indicators on the screen edges.
  • The LCD instrument cluster is too big. The edges are blocked by the steering wheel.
  • The infotainment UI has latency.
  • It has too many driver assistance features.
    • Lane change assist is too conservative.
    • "Smart cruise control" often disengages on its own.
    • User manual does not explain the features well enough.

EVgo fast charging was expensive and not as fast as expected. The car charged 55 kWh over 1 hour. I paid 39 USD.