Raspberry Pi

From Wildsong
Jump to navigationJump to search

Inventory

pi5 5 4GB BT 43:45:c0:00:1f:ac WLAN d8:3a:dd:c1:be:60 eth0 d8:3a:dd:c1:be:5f
Violet 3B+ BT B8:27:EB:A3:E7:69 WLAN b8:27:eb:5c:18:96 eth0 b8:27:eb:09:4d:c3
Tenrec 4B BT WLAN eth0 05/2020
Okapi 0w WLAN eth0
Zebra 0w WLAN eth0
WuKong WuKong Pi H3 Zero WLAN eth0 From Seeed Studio 5/23
Golden 3B WLAN ioPhat eth0

Bluetooth

sudo apt install bluetooth blueman python-gobject python-gobject-2

Charge 2 BLE F1:1D:85:35:B5:00
Plover BT 3C:15:C2:DD:15:9D
Stellar BT
Swift BT
EY-SB battery charger BT 44:A6:E5:1F:FA:FD
SC BT CC:58:00:00:09:64
??? 41:E5:79:41:3B:C7

My first edition Model B from 2012 got fried somehow, and it's passed beyond the Veil of Smoke into the Netherworld.

I have printed a case for the old one, now I am Printing a Pi 2 case. Turns out making cases is one of the most fun things I have done with a Pi so far.

Hardware

Related vaguely to the PI or usable with it

  • Pi Noir camera and cables for Pi and Pi Zero
  • case with protoboard
  • Startech industrial 7 port USB hub (ST7200USBM)-- power connector from digikey, ED2779-ND NOTE: 7-24vdc input
  • UBlox GPS
  • Alfa WiFi adapter
  • 7" Lilliput DisplayLink monitor with touchscreen
  • Apple bluetooth keyboard
  • AData 32 GB Class 10 SDHC card
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 010: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Bus 001 Device 011: ID 17e9:02a9 DisplayLink 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 047d:2043 Kensington 
Bus 001 Device 005: ID 0409:0050 NEC Corp. 7-port hub
Bus 001 Device 006: ID 0bda:817f Realtek Semiconductor Corp. RTL8188RU 802.11n WLAN Adapter
Bus 001 Device 009: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 012: ID 1546:01a4 U-Blox AG 
Bus 001 Device 007: ID 046d:c06c Logitech, Inc. Optical Mouse
Bus 001 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Adafruit HDMI adapter

These are adapters that connect a color LCD to an HDMI port. I got one with touch and one without. I am using the touch enabled board with a 5" LCD, also from Adafruit.

Copy the image to an SD card using balenaEtcher. Then mount the boot partition and edit config.txt

Edit config.txt to enable the display

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1
 
# uncomment to force a specific HDMI mode (here we are forcing 800x480!)
hdmi_group=2
hdmi_mode=87
hdmi_cvt=800 480 60 6 0 0 0
hdmi_drive=1

Also...

enable_uart=1

To enable ssh server

touch ssh

Put the card into the Pi and power it up.

With Raspian, I was done. With KivyPie I just get a pretty rainbow screen. Darn. Could be this:

NOTE: startx is missing on this image, execute this command to install it:
sudo apt-get install fluxbox xinit x11-apps xclip 
xsel lxterminal xterm xserver-xorg-video-fbturbo

I wonder how I get a prompt? I think I will need to ssh in.

Installing Kivy from files onto Raspian

https://kivy.org/doc/stable/installation/installation-rpi.html

Seg faults -- fix it https://github.com/kivy/kivy/issues/6007

DisplayLink kernel build

Some help with kernels and DisplayLink http://karuppuswamy.com/wordpress/2012/08/17/lilliput-displaylink-usb-monitor-um-70-17e902a9-with-raspberry-pi-on-raspbian/

Following Mitchtech kernel compile instructions with a few variations. I am using Linux Mint 14 as my build host. This installs the newest (4.7) compiler and creates symlinks. This step (building a working ARM tool chain) used to take days to figure out. Ah, progress! I love the Linux world I live in!

sudo apt-get install gcc-arm-linux-gnueabi git-core ncurses-dev

Fetching code

mkdir -p ~/src/raspberrypi
cd ~/src/raspberrypi
git clone https://github.com/raspberrypi/tools.git
git clone https://github.com/raspberrypi/linux.git
cd linux
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- bcmrpi_cutdown_defconfig
# enabled the DisplayLink module and disable many things I will never use
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j5
mkdir ../modules
make modules_install ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- INSTALL_MOD_PATH=../modules/
cd ../tools/mkimage/
# Create kernel.img
./imagetool-uncompressed.py ../../linux/arch/arm/boot/Image
cp kernel.img /media/bwilson/8B12-9112/
sudo rm -rf /media/bwilson/29b6c2f5-5469-49f2-abd5-daa9149021cc/lib/modules/
sudo rm -rf /media/bwilson/29b6c2f5-5469-49f2-abd5-daa9149021cc/lib/firmware/
sudo cp -a lib/modules/ /media/bwilson/29b6c2f5-5469-49f2-abd5-daa9149021cc/lib
sudo cp -a lib/firmware/ /media/bwilson/29b6c2f5-5469-49f2-abd5-daa9149021cc/lib

Zoom zoom away we go. Put SD card in Pi. Connect monitor and boot. Worked on first try for me! Fabulous.

X11

Before diving in to the above instructions on how to get X11 going, I typed "startx" and it came up! Okay. Moving on. I need the touchscreen to work. It acts like it works but is not calibrated. I am using a mouse at the moment.

Wifi

ALFA AWUS036H works but does not show up in wpa_gui.

ALFA AWUS036NHR works. wpa_gui does not fit on the small monitor. This is a problem!

Trying to get this sorted by following the instructions for wicd from this page: http://wiki.debian.org/WiFi/HowToUse

apt-get install wicd

Could be the only problem was that bwilson was not a member of netdev

Wardriving

See WiFi Wireless Projects page

Bluetooth keyboard

The Zonet USB bluetooth adapter which I used in 8track does not work in the Pi. It identifies itself as ID 0a5c:2101 Broadcom Corp. BCM2045 Bluetooth

The Parani UD100 does though. I think I need a few more Parani's! They are cool.

apt-get install bluez blueman

[/cdn-cgi/l/email-protection [email protected]]:/etc/default# hcitool scan Scanning ... 00:80:25:1C:C0:27 SMA001d SN: 2120048888 SN2120048888 E8:06:88:4F:52:48 Apple Wireless Keyboard

Once confident that there really was a bluetooth device on the Pi, I ran blueman-assistant from the console and it worked! Presto! I wonder if it works after rebooting...

GPS stuff

Hardware: probably a UBlox AEK-4P with a mag mount antenna on the roof. Using the Ublox means I can connect the Pi via USB and the Kenwood radio via RS232 adapter.

sudo apt-get install foxtrotgps gpsd
sudo dpkg-reconfigure gpsd gpsd-clients

Big Buttons in the Pandemic April 2020

I have been playing with using this Contour Shuttle Xpress as a media controller on Murre and got this idea that it would be more fun to build a custom controller. Then I thought "maybe a Pi Zero could do that?"

I have some rotary encoders and some giant arcade style buttons stashed. Hmm.

First off, how can I make the Pi look like an HID device?

Since I have "AutoHotKey" already installed in theory making the Pi into a keyboard should be all I need to do, and, voila!

Turn Your Raspberry Pi Zero into a USB Keyboard (HID)

Also there is this Adafruit article about "Gadgets"

But let's give the keyboard hack a try.

A Clock Radio reinvigorated May 2020

I want to hide a Pi Zero inside a beloved Panasonic RC-7243 clock radio to bring it into the present, streaming music and talking to us.

I am into the Proof of Concept stage, grabbing anything already at hand. I am using Violet the Pi 3B+ as the dev platform but it's slowwwww so I ordered a Pi 4.

Upgraded Stretch on violet, and installed emacs. Made a 1024 swapfile on the SSD, because builds mysteriously failed and got better with more memory. Set up a webcam to act as a microphone. Set the audio input to the webcam and output to the 3.5mm audio jack in .asoundrc file, see Alexa section.

See also the Tenrec page.

Music

PulseAudio is just broken for me anyway...

sudo apt purge pulseaudio

I started with Logitech Squeezebox client. I've been running the media server for years now.

To install the client

sudo apt install squeezelite
amixer cset numid=3 1
alsamixer

I daisy chained the audio output on the Pi into the Line In on Murre to share the speakers. Use alsamixer to pump up the volume.

My Pi was muted by default which I switched with

amixer cset numid=2 1

You can do

amixer controls
  numid=3,iface=MIXER,name='PCM Playback Route'
  numid=2,iface=MIXER,name='PCM Playback Switch'
  numid=1,iface=MIXER,name='PCM Playback Volume'
  numid=5,iface=PCM,name='IEC958 Playback Con Mask'
  numid=4,iface=PCM,name='IEC958 Playback Default'
amixer cget numid=2
 numid=2,iface=MIXER,name='PCM Playback Switch'
 ; type=BOOLEAN,access=rw------,values=1
 : values=on     <--- this means it's unmuted

So far there is no /dev/mixer or /dev/sound/mixer so aumix does not work.

You can save the current mixer settings with

sudo alsactl store

Test output, you should hear "Front Left" and "Front Right". Or leave off the -twav to get lovely pink noise. (Ugh)

speaker-test -c2 -twav

I plugged in a USB sound card and then found its name with "aplay -L" and some trial and error

speaker-test -c2 -twav -Dfront:CARD=Device

Set up and test input with USB mini microphone from Adafruit

https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/recording-audio

They tell you how to record and playback a file there. This worked badly, the mic is defective. I switched back using to my camera for now, it works perfectly.

I will need to tap into the radio's audio amp for output or come up with another amp and speaker. In that case I will need a way to switch output between the Pi and the radio.

At this point I should be able to run the Squeezebox Client. Do NOT use port 9000. Refresh the web page to see the client in the list.

squeezelite -l
squeezelite -n okapi -s 192.168.123.2 -o speakerbonnet

I am getting an indication the output device is already in use. Huh.

Bluetooth A2DP audio sink

I want the Pi to be a sink for bluetooth audio so that I can play podcasts, youtube etc directly from my laptop, phone or Echo Flex. First do this

sudo apt install bluealsa

Maybe this works, https://scribles.net/streaming-bluetooth-audio-from-phone-to-raspberry-pi-using-alsa/

Or maybe I will try pulseaudio again, sigh, I will probably break Okapi...

https://thecodeninja.net/2016/06/bluetooth-audio-receiver-a2dp-sink-with-raspberry-pi/

apt-get install pulseaudio-module-bluetooth bluez-tools
gpasswd -a pi pulse
gpasswd -a pi lp
gpasswd -a pulse lp
gpasswd -a pi audio
gpasswd -a pulse audio
sh -c "echo 'extra-arguments = --exit-idle-time=-1 --log-target=syslog' >> /etc/pulse/client.conf"
hciconfig hci0 up
# "I am a car stereo"
hciconfig hci0 class 0x200420

and now reboot to become a bluetooth car stereo... soon now... Okapi is only a Pi Zero W so it takes a few minutes... tick tock.

reboot

Ah, and she's back.

This is interesting, use this tool to

pick what you want your Pi to appear as.

I chose for Okapi to be Audio Device, Audio/Video, HiFi Audio Device = 0x200418 I could make it headphones or a car... I wonder what the differences are?

Saving power

Turn off HDMI output; in rc.local:

# Disable HDMI
/usr/bin/tvservice -o

Turn off LED

Alexa

I have a spare webcam so I used it for input. All I had to do was plug it in.

lsusb
Bus 001 Device 005: ID 046d:081d Logitech, Inc. HD Webcam C510
Bus 001 Device 004: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: U0x46d0x81d [USB Device 0x46d:0x81d], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Configure .asoundrc as per https://iotbytes.wordpress.com/connect-configure-and-test-usb-microphone-and-speaker-with-raspberry-pi/

Okay, it looks like there is audio. How to test?

arecord --format=S16_LE --duration=10 --rate=16000 out.wav
aplay out.wav

That worked. Then I got a tiny USB microphone from Adafruit. It works, too.

cd ~/alexa
bash startsample.sh

You will need to authorize use for the Pi, see the link below.

+----------------------------------------------------------------------------+
|                                  Options:                                  |
| Wake word:                                                                 |
|       Simply say Alexa and begin your query.                               |
| Tap to talk:                                                               |
|       Press 't' and Enter followed by your query (no need for the 'Alexa').|
| Hold to talk:                                                              |
|       Press 'h' followed by Enter to simulate holding a button.            |
|       Then say your query (no need for the 'Alexa').                       |
|       Press 'h' followed by Enter to simulate releasing a button.          |
| Stop an interaction:                                                       |
|       Press 's' and Enter to stop an ongoing interaction.                  |
| Privacy mode (microphone off):                                             |
|       Press 'm' and Enter to turn on and off the microphone.               |
| Playback Controls:                                                         |
|       Press '1' for a 'PLAY' button press.                                 |
|       Press '2' for a 'PAUSE' button press.                                |
|       Press '3' for a 'NEXT' button press.                                 |
|       Press '4' for a 'PREVIOUS' button press.                             |
| Settings:                                                                  |
|       Press 'c' followed by Enter at any time to see the settings screen.  |
| Speaker Control:                                                           |
|       Press 'p' followed by Enter at any time to adjust speaker settings.  |
| Firmware Version:                                                          |
|       Press 'f' followed by Enter at any time to report a different        |
|       firmware version.                                                    |
| Info:                                                                      |
|       Press 'i' followed by Enter at any time to see the help screen.      |
| Reset device:                                                              |
|       Press 'k' followed by Enter at any time to reset your device. This   |
|       will erase any data stored in the device and you will have to        |
|       re-register your device.                                             |
|       This option will also exit the application.                          |
| Reauthorize device:                                                        |
|       Press 'z' followed by Enter at any time to re-authorize your device. |
|       This will erase any data stored in the device and initiate           |
|       re-authorization.                                                    |
|                                                                            |
| Quit:                                                                      |
|       Press 'q' followed by Enter at any time to quit the application.     |
+----------------------------------------------------------------------------+

I built Alexa using instructions I found on this page, with only a few hiccups that mostly went away with persistence. I still need to make her load on boot.

Managing images

Managing Raspberry Pi images