iOS 16 Volume Control Change

I hate change for change sake. Apple seems to have modified the volume control for music playing on the Lock Screen and I can’t see a good reason for the change.

Music playing via AirPods

While listening to music via AirPods it seems the only way to adjust the volume is to press the physical up/down buttons on the phone.

Music playing via AirPlay on speakers

When music is playing on external speakers the volume control line is visible below the play control.

My cardio workout has me using AirPods with the phone resting horizontally on the machine in front of me. In the past if I needed to adjust the volume I could tap the screen to wake it up, then adjust the volume with the slider. I also had visual feedback as to where the volume was set. With the new layout I have to pick up the phone, press the volume button, and return the phone to its resting location. It may sound like a minimal change but has to do a lot with balance and cadence, plus a much larger chance of dropping the phone.

Arducam Red Tint Issue on Raspberry Pi

no tuning file

After writing up my issue yesterday I posted the question on the amazon product details. I received an answer with a link to this page overnight. It references a page with several custom tuning files for their lenses. There did not seem to be a tuning file that matched the 175° FOV lens on the package I got, but there was both a 160° and a 200° version. I downloaded both files and ran a test capture with each. On initial viewing, either will work for my solution. I need to focus the lens to see if there are any noticeable differences.

–tuning-file imx219_160.json
–tuning-file imx219_200.json

The commands I used to download and test the tuning files are

wget https://www.arducam.com/wp-content/uploads/2022/05/imx219_160.json
wget https://www.arducam.com/wp-content/uploads/2022/05/imx219_200.json
libcamera-still -v 2 --nopreview --hflip --vflip --thumb none --tuning-file imx219_160.json --output `hostname`-160.jpg
libcamera-still -v 2 --nopreview --hflip --vflip --thumb none --tuning-file imx219_200.json --output `hostname`-200.jpg

I got a message about the tuning file being an older version, with pointers on how to convert it to the updated version.

WARN RPiController controller.cpp:43 This format of the tuning file will be deprecated soon! Please use the convert_tuning.py utility to update to version 2.0.

I still need to decide how I want to handle this in my automated photo processing, but having the information is hugely useful.

Links in one place:

Arducam 8MP IMX219 175 Degree Ultra Wide Angle Raspberry Pi Camera Module

I’ve been playing with several cameras attached to raspberry pi recently. Getting cameras is easy right now while getting Raspberry Pi is not. I purchased this model from Amazon and have it connected to a Raspberry Pi4. I had to upgrade the unit from running Raspian Buster to Raspian Bullseye to get support for this particular camera.

Amazon Listing

I was doing some searching for red tint problems and fixing them, and it seems to be something that should be able to fix in software. Most of the fixes refer to Jetson Nano, which is not the platform I’m working with, so the fixes don’t align with my platform.

Red Tint Problem on IMX219

I still need to manually focus the lens on this camera. It’s always a frustrating process on a small lens like this because my fingers obscure the view. I’m running with camera_auto_detect=1 while https://www.arducam.com/docs/cameras-for-raspberry-pi/native-raspberry-pi-cameras/8mp-imx219-standard-camera-modules/ recommends modifying /boot/config.txt and setting both camera_auto_detect=0 and dtoverlay=imx219. exiftool reports Camera Model Name : /base/soc/i2c0mux/i2c@1/imx219@10 with the current settings. I’ve verified that using the explicit camera overlay produces the same red tint as well as having exactly the same Model Name in the exif data.

I was able to find the file /usr/share/libcamera/ipa/raspberrypi/imx219.json which may be similar to the ISP files the Jetson platforms were using. I’m still working on the red tint.

iOS 16 Lock Screen Music Player

Yesterday I noticed the nice cover art display on the lock screen of my upgraded iPhone. Today while working out I noticed it was working differently, much closer to the old style.

I couldn’t think of what might have caused the change. I scrolled up and there were some older notifications. I deleted all of them, but still no change. Then it occurred to me to tap the thumbnail of the cover art.

I have no idea why it was defaulting to the thumbnail today after defaulting to full screen yesterday.

I upgraded to iOS 16 today

I haven’t found anything that significantly annoyed me yet.

When I’m playing music and there’s cover art, it’s now displayed on the Lock Screen, which is nice.

When the cover art is missing, the controls are now at the bottom of the screen. Each time I see them there I start to rotate my phone, thinking I’ve picked it up upside down.

I’m sure I’ll get used to the new layout. I find this problem funny, at least today.

Sharing GPS between multiple Raspberry Pi

I have several Raspberry Pi around my apartment in various states of development projects running different versions of Raspian. I’ve been playing with GPSD recently and want the services to be transparently available on each Pi without having to connect directly via a USB port. It turns out that making it work is easy, but obscure.

On my machine that has the GPS plugged into the USB port I need to change the /lib/systemd/system/gpsd.socket file to allow the socket to be visible on the network. On my Raspian Buster machine, it originally looked like this

[Unit]
Description=GPS (Global Positioning System) Daemon Sockets

[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=[::1]:2947
ListenStream=127.0.0.1:2947
SocketMode=0600

[Install]
WantedBy=sockets.target

I changed it to look like this

[Unit]
Description=GPS (Global Positioning System) Daemon Sockets

[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=[::]:2947
ListenStream=0.0.0.0:2947
SocketMode=0600

[Install]
WantedBy=sockets.target

I was able to test that it was working properly by running the command gpsmon WimPi4:2497 on the remote host. WimPi4 is the hostname of my machine with the GPS installed.

On the machines I wanted access to the GPS, I modified the file /etc/default/gpsd by adding an entry in the DEVICES section to make the file below.

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="gpsd://WimPi4"

# Other options you want to pass to gpsd
GPSD_OPTIONS=""

# Automatically hot add/remove USB GPS devices via gpsdctl
USBAUTO="true"

With the changes to the gpsd configuration I was able to run cgps or gpsmon on the client machines without requiring an argument. The client programs are connecting the local daemon, which is then connecting to the machine with the gps receiver running gpsd.