IcedRaktajino

joined 1 year ago
[–] IcedRaktajino@startrek.website 4 points 3 weeks ago* (last edited 3 weeks ago)

This week was nice but we had one last week and one's forecast for this coming week, though I don't think it's going to be as bad as the one we got first week of July.

Glad I got my PV system installed before the first one hit. A/C just feels cooler when it's free 😎

Heatwaves notwithstanding, still prefer summer. I hate shoveling snow, I hate being cold, I hate that people deal with slick roads every year but still can't learn to drive (or NOT drive) on them, etc. My only complaints about summer are the humidity and mosquitos.

[–] IcedRaktajino@startrek.website 7 points 3 weeks ago* (last edited 3 weeks ago)

Ah, yeah, you can have most devices with lithium batteries in your checked baggage, but they have to be off and packed so they're protected from damage. It's preferred for those to be carry-on items but isn't required.

Power banks, vapes, spare batteries, etc are specifically prohibited in checked baggage and must be in your carry-on or on your person.

--https://www.faa.gov/newsroom/lithium-batteries-baggage

[–] IcedRaktajino@startrek.website 8 points 3 weeks ago* (last edited 3 weeks ago) (2 children)

I think it's the other way around, at least in the US. The last time I flew, anything with a lithium battery had to be either on your person or in your carry-on and couldn't exceed a certain amperage/watt-hour rating. I remember having to check specifically on that since I wasn't sure if I could bring my vape.

But mostly, a bare PCB with two 18650's visible isn't something I want to have to explain to airport security lol. They may let it pass, but it's definitely going to be a hassle. Easiest to just use an approved power bank or just power it from my phone's USB port. The UPS was mostly so I could make it mobile and use solar chargers with it.

[–] IcedRaktajino@startrek.website 5 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

It's kind of a mix of things duct-taped together, but here's the gist of what controls what. If you want to see any specific configs, let me know.

Network Manager controls the "static" interfaces. I've got some udev rules for my known hardware (USB wifi/ethernet adapters) so that they get friendly names as opposed to ugly "predictable" names.

The interfaces managed by NetworkManager are:

  • STA mode Wi-Fi (internet uplink)
  • LAN Bridge
  • Wired Ethernet (internet uplink)

Connecting a USB-tethered smartphone is pretty plug and play. It automatically gets picked up as a USB ethernet interface, receives its IP address from DHCP, and gets set as the default gateway. So there's nothing that needs to be configured when using that as the internet uplink other than making sure there's no other active gateway that might interfere.

The LAN segment is a generic Linux bridge called br-lan (I'm borrowing OpenWRT's naming convention). In normal operation, it has wlan1 and usb0 as members (AP and USB ethernet gadget, respectively). If I need a wired ethernet port on the LAN side, I just plug a USB ethernet adapter in and add it with brctl addif br-lan eth{XXX}

The usb0 ethernet gadget interface is brought up using a script that runs at boot via systemd to configure a libcomposite ethernet gadget before the network target. This ensures it's available when the network comes up so it can be successfully added to the LAN bridge.

When changing out of the default configuration, I just go into network manager to enable/disable the correct interfaces. e.g. If I want to use wired ethernet for uplink and internal wifi for client AP, I enable the wired ethernet and disable the internal wifi's connection to the router. Then I swap hostapd conf files to use the one configured for the internal wifi instead of the USB one and update the members in the LAN bridge accordingly. e.g. brctl delif br-lan wlan1 ; brctl addif br-lan wlan0

To add a LAN-side wired ethernet, I just make sure it's not already configured for "WAN" in NetworkManager and add it to the LAN bridge. That, or setup a VLAN interface and use a single USB ethernet adapter for both (haven't done that on this device but I know it works from having done that in the past).

Thankfully, PiHole exposes the DHCP controls for its underlying dnsmasq and since I'm already running PiHole for ad blocking and DNS, it was natural to also use it for DHCP. It's configured to advertise addresses to the br-lan interface only.

Routing/NAT is all done directly with iptables. The VPNs dynamically update it as they connect/disconnect using their up and down hook scripts, and for the NAT used for client connections, it's basically just iptables -t nat -A POSTROUTING -s $SOURCE_CIDR -o $OUT_INTERFACE -j MASQUERADE where SOURCE_CIDR=192.168.5.0/24 is the LAN segment address range and OUT_INTERFACE=wlan0 is the uplink interface (in the default configuration).

I've got some ugly scripts to adjust the NAT rules depending on which interface is currently acting as the "WAN" interface.

[–] IcedRaktajino@startrek.website 10 points 3 weeks ago* (last edited 3 weeks ago)

I addressed that in a few ways:

  1. I bought a quality SD card to start with. A 1 TB card is a lot of eggs in one basket so I wasn't about to cheap out on that part.
  2. The board has 32 GB of eMMC which is where the OS is installed
  3. There are very few writes to the SD card during normal operation (after initially loading content onto it). Running data (DBs, caches, log dirs, etc) for most applications is stored on the eMMC rather than the SD card or in some cases written to tmpfs (logs).
  4. The subset of content I loaded onto this from my main media server was all chosen because it has the most re-watch potential, so re-loading close to a TB of media isn't something that's going to happen too often. The largest write it sees is the semi-annual refresh of the full ~130 GB Wikipedia ZIM dump, but I may push that back to once a year. I've only updated it twice so far.
  5. Armbian assumes it's going to run from SD card and does a pretty good job about minimizing the number of writes. Logs are all written to zram and only occasionally written to disk, it has no swap file, etc. If those are good enough to keep an SD card happy, they should keep an eMMC even happier.

Basically, I tried my best to configure the SD card so that in day to day use it's WORM (write once, read many) without actually going so far as mounting it read only. The data that gets synced daily from my main servers is incremental and usually has few changes.

I've had PIs running for years without issue with the SD card mounted read only and retired them from service before the SD cards ever started showing issues. My Meshtastic EAS Alerter project is using one of those Pi Zero W2's I retired from an older project and its 6 year old SD card.

This is actually the second iteration. Originally I attached a 1 TB SSD via a USB->NVMe enclosure. That worked, but also made the unit sprawl which was something I wanted to trim down in the final version. It worked but had random glitches and instability that I initially chalked up to the board and/or Armbian. I didn't realize it was EMI from the Wi-Fi coming in through the USB cable until after I switched to the 1 TB SD card. That's why I added some ghetto shielding to the power cable for lack of having ferrite beads on hand lol.

Should the SD card prove problematic over time, I can always go back to the USB->NVMe solution and lose its "keychain" form factor.

   /_\  _ _ _ __ | |__(_)__ _ _ _  
  / _ \| '_| '  \| '_ \ / _` | ' \ 
 /_/ \_\_| |_|_|_|_.__/_\__,_|_||_|
                                   
 v25.11.2 for BananaPi BPI-M4-Zero running Armbian Linux 6.12.58-current-sunxi64

 Packages:     Ubuntu stable (noble)
 Updates:      Kernel upgrade enabled and 52 packages available for upgrade 
 WiFi AP:      SSID: (BananaAP), channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
 IPv4:         (LAN) 192.168.5.1, 10.10.10.15 (WAN) 192.168.1.12
 Containers:   postgres_postgres_1

 Performance:  

 Load:         4%           	 Uptime:       18 weeks, 22 hours, 49 minutes	 Local users:  2           	
 Memory usage: 45% of 3.83G  	 Zram usage:    74% of 1.91G  	
 CPU temp:     63°C           	 Usage of /:   35% of 29G    	
 RX today:     6 GiB  
[–] IcedRaktajino@startrek.website 22 points 3 weeks ago* (last edited 3 weeks ago) (2 children)

The original intent of this was a travel router that VPN'd back to home as well as providing PiHole ad blocking, but it ballooned when I just wanted to see how much could run on this little board. I didn't have anything in mind when I made it other than if I could, so I had to invent reasons after the fact lol

SHTF Server

If shit ever hits the fan (evacuation order, natural disaster, house burns down, etc), this is something that's easy to grab, takes up almost no space, can be powered for days with a power bank, and has all my important docs on an encrypted volume. If I'm stuck in a temporary shelter or whatever, I can keep myself entertained as well as a handful of other people who can connect to it.

I've also got cron jobs to sync important files from my main servers to this one, so it stays up to date.

Power Outages

We don't maintain any permanent streaming subscriptions (only when there's something good on like a new season of Star Trek drops lol). So if the power goes out, and I can't run the main servers, this can (and has!) run from a power bank for about 36 hours. Everyone in the house can stream something different to their phone if they want.

Camping, Traveling, Etc.

Kinda covered under offline access, but can keep the kids entertained without cell service or racking up data overages.

I also made a couple of Snapcast receiver speakers with some old Pi Zero W's so we can have wireless speakers around the campsite. I was able to add an RTL-SDR dongle to it and pipe the FM audio to Snapcast, so if there's a game on, we can listen to that. I haven't used that in practice, but it worked on the bench.

Internet access isn't a given

I've had to travel places that have no or poor internet access and poor cell reception. Depends on where and why I have to travel and is always a crapshoot. This gives me a bare minimum environment that's always on hand.

Black Start

If my homelab ever goes totally down or has a major malfunction, I've got copies of documentation, console passwords (that are normally kept in Vaultwarden hosted on the stack that's unavailable in this scenario), and other resources to bring things back up. I host pretty much everything we use (including email) so when the lab is down (rare but does happen) it's nice to have a backup stack.

Nice. I forget what project I used (it's been over a year and I haven't used it since). I just remember it was Docker based and I setup a wrapper script where I could just feed it a base URL to start from and a filename for its output. It definitely didn't do the cleanup and polishing that DevDocs does with theirs, but it worked well enough for my purposes.

[–] IcedRaktajino@startrek.website 3 points 3 weeks ago (2 children)
  • MDN (HTML, CSS, JS): Yes - Had to manually crawl/scrape that one myself. Took almost 3 days since I had a pretty generous delay between pages.
  • Tailwind: Yes (v3 anyway)

The Kiwix web interface has a search, and it's decent. AFAIK, unless you build your own somehow, that's all there is for that.

[–] IcedRaktajino@startrek.website 19 points 3 weeks ago* (last edited 3 weeks ago)

Yeah, I was surprised as well by how many things can run concurrently and why this project ballooned like it did. It was originally just going to be a travel router and PiHole but I decided to see how much I could cram in there. There's still room for more but I had to move on to other projects once winter was over. If/when I have time, I'd like to add a map tile server to the mix.

The only limit I've run into is when I'm running the NextJS dev server and Jellyfin at the same time. That's just a bit too much demand on the memory so one or the other crashes. So I can't watch JF while I work, but considering what's hosting these, I can forgive it.

[–] IcedRaktajino@startrek.website 22 points 3 weeks ago (5 children)

Ha, yeah, that UPS board isn't going on any plane. I'd just use an approved power bank in that case.

[–] IcedRaktajino@startrek.website 26 points 3 weeks ago* (last edited 3 weeks ago) (4 children)

Ok, that's pretty cool!

I have a keychain-sized portable server based on a Banana Pi M4 Zero that I thought was compact, but this one wins lol. Mine does a bit more than that, but I've got a smidge more RAM and horsepower to play with than an ESP32. Still, that one does a lot of what mine does (books, movies, tv shows, music) with much less resources. Impressive!

Maybe I'll do a write-up here on my travel server if people are interested.

Edit: By popular demand, I did a write-up: https://startrek.website/post/41991401

[–] IcedRaktajino@startrek.website 21 points 3 weeks ago (1 children)

I have that same remote/keyboard and love it.

Had the same problem and similar solution with some LED candles since I kept losing the little mini remote. I taught C1 from the power button on the candles' mini remote. It would turn them on, but not off. So I had to make C2 the "off" command by learning it separately.

I have absolutely no frigging clue why that works the way it does. You'd think it would be the same signal either way, but something is definitely different.

So far, that's the only device that acts like that. I programmed the power and directional buttons to control my Eufy robo vac, and those work as expected. The buttons above C1 and C2 work to toggle power (left button) and cycle thermostat settings (right button) on my electric fireplace correctly as well.

 
 

Saw an article posted about Tim Cook calling the launch of Apple Maps his first big mistake which reminded me of this.

 

TGG: S3E06: Letter to Gorbachev

102
me_irl (startrek.website)
submitted 3 months ago* (last edited 3 months ago) by IcedRaktajino@startrek.website to c/me_irl@lemmy.world
 

Technically I got 3.5 hours of sleep last night, but close enough that I was in a pretty sour mood all day. And yep, that's the actual line from the episode (S4E11: The Auction)

(Dorothy sees Rose carrying two buckets )

Dorothy: Oh, hi, Rose - is the ceiling in your room leaking, too?

Rose: No, Dorothy. I just finished milking the cow I keep in my closet. Gee, with only three hours' sleep, I can be as bitchy as you!

 
 
 

EAS (emergency alert system) alerts are issued for various local and/or national emergencies, and are frequently issued for severe weather events. As we enter tornado season in the US, I wanted to be able to receive and relay those over Meshtastic, specifically severe weather alerts, as an extra precaution since cell service often goes out after big storms.

I first setup a prototype setup on my laptop, but am planning to move the setup to a PiZeroW2 or a Banana Pi if the Raspi isn't up to the task. In addition to monitoring/relaying EAS alerts, I'm also going to pipe the audio to an Icecast source and then to an Icecast server so anyone on the local network can listen to it.

Got lucky in that today was the day they did the weekly EAS alert test and that I happened to have this running during the test. Everything surprisingly worked, which was nice. However, I wanted to tweak some things and needed a way to run my own tests. So I grabbed the audio sample from the Wikipedia page for SAME and piped that in which worked beautifully.

Requirements

  • A Pi or other computer than can run rtl_fm
  • A RTL-SDR dongle and antenna that can receive in the ~160-170 MHZ range (i.e. pretty much any FM radio antenna)
  • A Meshtastic node connected over USB or TCP

Sending Test Alerts

If you want to test the setup without having to wait for a weekly test, you can download a sample SAME audio clip from Wikipedia (https://en.wikipedia.org/wiki/File:Same.wav). You'll need to convert the sample rate before you can use it, though.

$ ffmpeg -i Same.wav -ar 48000 same48.wav
$ cat same48.wav | Meshtastic-SAME-EAS-Alerter --test-channel 0
2026-04-02T15:32:31.172Z INFO  [Meshtastic_SAME_EAS_Alerter] Successfully connected to the node.
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Loaded locations CSV
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Monitoring for alerts
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Alerts will be sent to channel: 0
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Test alerts will be sent to channel: 0
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] Begin SAME voice message: MessageHeader { message: "ZCZC-EAS-RWT-012057-012081-012101-012103-012115+0030-2780415-WTSP/TV-", offset_time: 47, parity_error_count: 0, voting_byte_count: 69 }
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] No location filter applied (locations empty) or no locations in alert
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] Attempting to send message over the mesh: 📖Received Required Weekly Test from WTSP/TV, Issued By: Broadcast station or cable system, Locations: Hillsborough, Manatee, Pasco, Pinellas, Sarasota
Connected to radio
Sending text message 📖Received Required Weekly Test from WTSP/TV, Issued By: Broadcast to ^all on channelIndex:0 
Waiting for an acknowledgment from remote node (this could take a while)
Received an implicit ACK. Packet will likely arrive, but cannot be guaranteed.
Connected to radio
Sending text message  station or cable system, Locations: Hillsborough, Manatee, Pasco, to ^all on channelIndex:0 
Waiting for an acknowledgment from remote node (this could take a while)
Received an implicit ACK. Packet will likely arrive, but cannot be guaranteed.
2026-04-02T15:33:11.227Z INFO  [Meshtastic_SAME_EAS_Alerter] End SAME voice message
2026-04-02T15:33:11.251Z WARN  [Meshtastic_SAME_EAS_Alerter] Program stopped, no longer monitoring

Working Prototype

This is the bash one-liner to start rtl_fm, tune it to the local NOAA frequency, and set the rate. That gets piped to tee which does 2 things currently:

  1. The audio is piped to play so that I can listen to the broadcast on the laptop's speakers. This will eventually be piped to an Icecast source
  2. Pipes the audio to the Meshtastic SAME EAS Alerter program (the project linked in this post) and configures its settings

When a SANE message is detected, the program decodes it and broadcasts it to the configured channel. Fun fact: the Screech. Screech. Screech you hear before a severe weather alert is actually the encoded version of the emergency alert and what this program decodes.

When I move this all to whatever flavor of Pi I end up using, that'll be wrapped in a systemd unit file so it can run headless and unattended.

$ rtl_fm -f 162.400M -s 48000 -r 48000 | tee >(play -q -r 48000 -t raw -e s -b 16 -c 1 -V1 -v 4 - sinc 125-3.2k) >(Meshtastic-SAME-EAS-Alerter --host 192.168.1.236 --test-channel 0) > /dev/null

Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to automatic.
Tuned to 162652000 Hz.
Oversampling input by: 21x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Exact sample rate is: 1008000.009613 Hz
Sampling at 1008000 S/s.
Output at 48000 Hz.
2026-04-02T14:20:49.702Z INFO  [Meshtastic_SAME_EAS_Alerter] Successfully connected to the node.
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Loaded locations CSV
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Monitoring for alerts
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Alerts will be sent to channel: 0
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Test alerts will be sent to channel: 0

 
59
me_irl (startrek.website)
submitted 4 months ago* (last edited 4 months ago) by IcedRaktajino@startrek.website to c/me_irl@lemmy.world
 

Alt Text: The text above the image reads "When you're in a group chat, and the chat goes silent for a few days, so you assume they've moved to another chat and not invited you." Image is of Frasier in a spa, wearing a mud mask and robe, with a suspicious look on his face noting that "there's a platinum door".

103
me_irl (startrek.website)
 
 

I'm watching Veep and everyone pronounces it "Ne-vaugh-da" (which is how I pronounce it) but Kent insists on correcting everyone with "Ne-VA-duh".

Who's correct? Is the show trying to correct a common mis-pronounciation or is Kent just full of shit?

 

Because his qwack was showing.

view more: ‹ prev next ›