HATs for balenaFin

Now that the balenaFin has been announced officially and is soon to be available at scale, we’d like to hear from you about HATs that would be useful to you. Reply to this thread and I’ll start to build a list.

  • Additional Ethernet ports using the USB headers (request)
  • Miniature UPS HAT (take a look at the PiJuice)
  • Support for interfacing Grove or Click modules
  • Add a second mPCIe slot using the USB header

Looking forward to hearing your suggestions!

4 Likes

@chrisys, are you talking about balenaFin-specific HATs (i.e. something that can be produced there at Balena) or just RPi-compatible HATs that can/should be tested on the balenaFin?

In any case, I think that being able to play with sensors and actuators would be interesting. That is, opening the doors to Grove modules from SeeedStudio or Click modules from MikroElektronica.

I would also love to have a very small UPS, that is something that can rechange a small battery from via the 6-24V input, then, in case of power outage, just signal to the balenaFin that it is running out of battery.

Hey @daghemo

In answer to your question I think both! In theory any HAT created for the Raspberry Pi using the same pinout is compatible as long as it follows the HAT hardware guidelines (i.e. no components on the underside), and so we shouldn’t really need to maintain a compatibility database.

In addition we’d also like to look at creating custom HATs that can take advantage of the on-board USB headers and perhaps the co-processor inputs/outputs as well.

I’ll update the post with your suggestions - thanks!

Also @daghemo you might take a look at the PiJuice which should work fine with the Fin :slight_smile:

Thanks @chrisys, I’ve added PiJuice to my wishlist, but as said by @zestyping on Running a Fin on USB or other battery power? the board is hard to find right now. :frowning: As I’ve said in the same post, S.USV could be another option. LiFePo4wered/Pi seems also to be interesting.

Another uncommon feature on RPi could be a power button and maybe a use button too. I know I can use a Grove module for that, but maybe adding some buttons on the DIN-rail case would be nicer.

I think that this may be of interest:

@chrisys
While we are talking about hats we should bring up that it would be great if balena could make or sell (if they already make one) a blank ring for your case solution. The options right now appear to be a $25 dollar case or a 65 dollar case if you have to large a hat in production. (POE hats)

-Thomas

1 Like

Hello Thomas, thanks for the suggestion! It makes sense for such a ring to be provided, I will dig a bit more into how we can make that possible and get back to you.

Cheers,
Nico

Hi there,

I was wondering what would need to be done to get a specific HAT to work with the BalenaFin. We use PiSound (from Blokas) HATs on our RPIs, but recently fell in love with the BalenaFin for obvious reasons, but the HAT does not seem to work properly with the drivers installed. We did include the blob provided on your git to see if that would help, but it still isn’t detected.

If you have any directions to point me in to get it to work, we’d greatly appreciate it!

Thanks,
Kevitto

Hi @Kevitto ! I confirm it should just work :tm: the same way as the RPI - can you please provide me more info on your environment (raspbian/balenaOS/etc? - what version? ) and the installation steps you performed? afaikt it should only require you to load the pisound overlay from config.txt ( or if you are using balenaCloud, set it within the BALENA_HOST_CONFIG_dtoverlay config variable. )

@curcuz Hello! Thank you for the quick response. I’m running raspbian version 9.9 and not using balenaCloud. I’ve loaded the pisound overlay from config.txt as well as the balena-fin.dtbo (balena first, pisound second). The OS is a working copy of raspbian that used to run on my raspberry pi 3b+ and the BalenaFin is a 1.1 model running a 3b+ lite control module. Are there other configurations I need to have done to work from an already installed 3B+ installation?

Thank you for your help,

Kevitto

Here is the output of my dmesg as well, if that can help.

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.57-v7+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1244 SMP Thu Jul 4 18:45:25 BST 2019
[ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Raspberry Pi Compute Module 3 Plus Rev 1.0
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] cma: Reserved 8 MiB at 0x3dc00000
[ 0.000000] On node 0 totalpages: 255488
[ 0.000000] Normal zone: 2246 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 255488 pages, LIFO batch:63
[ 0.000000] random: get_random_bytes called from start_kernel+0xac/0x4b4 with crng_init=0
[ 0.000000] percpu: Embedded 17 pages/cpu s39488 r8192 d21952 u69632
[ 0.000000] pcpu-alloc: s39488 r8192 d21952 u69632 alloc=17*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 253242
[ 0.000000] Kernel command line: coherent_pool=1M bcm2708_fb.fbwidth=1440 bcm2708_fb.fbheight=900 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 smsc95xx.macaddr=B8:27:EB:12:F0:E0 vc_mem.mem_base=0x3f000000 vc_mem.mem_size=0x3f600000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=PARTUUID=df72fdd3-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Memory: 989824K/1021952K available (8192K kernel code, 629K rwdata, 2176K rodata, 1024K init, 821K bss, 23936K reserved, 8192K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xbe800000 - 0xff800000 (1040 MB)
lowmem : 0x80000000 - 0xbe600000 ( 998 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x(ptrval) - 0x(ptrval) (9184 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 630 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 822 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] ftrace: allocating 26351 entries in 78 pages
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] arch_timer: cp15 timer(s) running at 19.20MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[ 0.000007] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[ 0.000023] Switching to timer-based delay loop, resolution 52ns
[ 0.000281] Console: colour dummy device 80x30
[ 0.000909] console [tty1] enabled
[ 0.000965] Calibrating delay loop (skipped), value calculated using timer frequency… 38.40 BogoMIPS (lpj=192000)
[ 0.001010] pid_max: default: 32768 minimum: 301
[ 0.001366] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.001402] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.002332] CPU: Testing write buffer coherency: ok
[ 0.002810] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.003484] Setting up static identity map for 0x100000 - 0x10003c
[ 0.003653] rcu: Hierarchical SRCU implementation.
[ 0.004476] smp: Bringing up secondary CPUs …
[ 0.005332] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.006264] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[ 0.007131] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[ 0.007251] smp: Brought up 1 node, 4 CPUs
[ 0.007334] SMP: Total of 4 processors activated (153.60 BogoMIPS).
[ 0.007358] CPU: All CPU(s) started in HYP mode.
[ 0.007378] CPU: Virtualization extensions available.
[ 0.008373] devtmpfs: initialized
[ 0.021136] VFP support v0.3: implementor 41 architecture 3 part 40 variant 3 rev 4
[ 0.021428] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.021476] futex hash table entries: 1024 (order: 4, 65536 bytes)
[ 0.022087] pinctrl core: initialized pinctrl subsystem
[ 0.022963] NET: Registered protocol family 16
[ 0.025975] DMA: preallocated 1024 KiB pool for atomic coherent allocations
[ 0.031674] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.031710] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.031932] Serial: AMBA PL011 UART driver
[ 0.034344] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[ 0.069866] bcm2835-dma 3f007000.dma: DMA legacy API manager at (ptrval), dmachans=0x1
[ 0.071789] SCSI subsystem initialized
[ 0.072043] usbcore: registered new interface driver usbfs
[ 0.072119] usbcore: registered new interface driver hub
[ 0.072232] usbcore: registered new device driver usb
[ 0.090298] raspberrypi-firmware soc:firmware: Attached to firmware from 2019-07-09 14:41, variant start_cd
[ 0.100129] raspberrypi-firmware soc:firmware: Firmware hash is 6c3fe3f096a93de3b34252ad98cdccadeb534be2
[ 0.111805] clocksource: Switched to clocksource arch_sys_counter
[ 0.200613] VFS: Disk quotas dquot_6.6.0
[ 0.200724] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.200935] FS-Cache: Loaded
[ 0.201179] CacheFiles: Loaded
[ 0.211223] NET: Registered protocol family 2
[ 0.212041] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[ 0.212106] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.212237] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.212442] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.212601] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.212668] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.213000] NET: Registered protocol family 1
[ 0.213615] RPC: Registered named UNIX socket transport module.
[ 0.213642] RPC: Registered udp transport module.
[ 0.213664] RPC: Registered tcp transport module.
[ 0.213686] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.215374] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 7 counters available
[ 0.218369] Initialise system trusted keyrings
[ 0.218574] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[ 0.228421] FS-Cache: Netfs ‘nfs’ registered for caching
[ 0.229001] NFS: Registering the id_resolver key type
[ 0.229047] Key type id_resolver registered
[ 0.229069] Key type id_legacy registered
[ 0.229100] nfs4filelayout_init: NFSv4 File Layout Driver Registering…
[ 0.231393] Key type asymmetric registered
[ 0.231423] Asymmetric key parser ‘x509’ registered
[ 0.231494] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 0.231698] io scheduler noop registered
[ 0.231723] io scheduler deadline registered (default)
[ 0.231996] io scheduler cfq registered
[ 0.232021] io scheduler mq-deadline registered (default)
[ 0.232045] io scheduler kyber registered
[ 0.235125] bcm2708_fb soc:fb: FB found 1 display(s)
[ 0.272141] Console: switching to colour frame buffer device 180x56
[ 0.292877] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 1440x900
[ 0.295348] bcm2835-rng 3f104000.rng: hwrng registered
[ 0.295845] vc-mem: phys_addr:0x00000000 mem_base=0x3f000000 mem_size:0x3f600000(1014 MiB)
[ 0.296597] vc-sm: Videocore shared memory driver
[ 0.297068] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
[ 0.308166] brd: module loaded
[ 0.318511] loop: module loaded
[ 0.319271] Loading iSCSI transport class v2.0-870.
[ 0.320134] libphy: Fixed MDIO Bus: probed
[ 0.320364] usbcore: registered new interface driver lan78xx
[ 0.320583] usbcore: registered new interface driver smsc95xx
[ 0.320762] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[ 0.348788] dwc_otg 3f980000.usb: base=(ptrval)
[ 0.549173] Core Release: 2.80a
[ 0.549281] Setting default values for core params
[ 0.549450] Finished setting default values for core params
[ 0.749917] Using Buffer DMA mode
[ 0.750026] Periodic Transfer Interrupt Enhancement - disabled
[ 0.750194] Multiprocessor Interrupt Enhancement - disabled
[ 0.750358] OTG VER PARAM: 0, OTG VER FLAG: 0
[ 0.750499] Dedicated Tx FIFOs mode
[ 0.757017] WARN::dwc_otg_hcd_init:1045: FIQ DMA bounce buffers: virt = bdd04000 dma = 0xfdd04000 len=9024
[ 0.763333] FIQ FSM acceleration enabled for :
Non-periodic Split Transactions
Periodic Split Transactions
High-Speed Isochronous Endpoints
Interrupt/Control Split Transaction hack enabled
[ 0.793828] dwc_otg: Microframe scheduler enabled
[ 0.793888] WARN::hcd_init_fiq:457: FIQ on core 1
[ 0.799996] WARN::hcd_init_fiq:458: FIQ ASM at 80650d3c length 36
[ 0.806183] WARN::hcd_init_fiq:497: MPHI regs_base at be810000
[ 0.812371] dwc_otg 3f980000.usb: DWC OTG Controller
[ 0.818526] dwc_otg 3f980000.usb: new USB bus registered, assigned bus number 1
[ 0.824700] dwc_otg 3f980000.usb: irq 56, io mem 0x00000000
[ 0.830829] Init: Port Power? op_state=1
[ 0.836861] Init: Power Port (0)
[ 0.843062] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[ 0.849204] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.855361] usb usb1: Product: DWC OTG Controller
[ 0.861526] usb usb1: Manufacturer: Linux 4.19.57-v7+ dwc_otg_hcd
[ 0.867708] usb usb1: SerialNumber: 3f980000.usb
[ 0.874440] hub 1-0:1.0: USB hub found
[ 0.880562] hub 1-0:1.0: 1 port detected
[ 0.887136] dwc_otg: FIQ enabled
[ 0.887143] dwc_otg: NAK holdoff enabled
[ 0.887148] dwc_otg: FIQ split-transaction FSM enabled
[ 0.887159] Module dwc_common_port init
[ 0.887449] usbcore: registered new interface driver usb-storage
[ 0.893650] mousedev: PS/2 mouse device common for all mice
[ 0.900585] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[ 0.906934] bcm2835-cpufreq: min=600000 max=1200000
[ 0.913542] sdhci: Secure Digital Host Controller Interface driver
[ 0.919714] sdhci: Copyright(c) Pierre Ossman
[ 0.926339] sdhost-bcm2835 3f202000.mmc: could not get clk, deferring probe
[ 0.932798] sdhci-pltfm: SDHCI platform and OF driver helper
[ 0.939550] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.945896] hidraw: raw HID events driver (C) Jiri Kosina
[ 0.952291] usbcore: registered new interface driver usbhid
[ 0.958416] usbhid: USB HID core driver
[ 0.965285] vchiq: vchiq_init_state: slot_zero = (ptrval), is_master = 0
[ 0.972933] [vc_sm_connected_init]: start
[ 0.979183] vc_vchi_sm_init: failed to open VCHI service (-1)
[ 0.979192] [vc_sm_connected_init]: failed to initialize shared memory service
[ 0.991477] [vc_sm_connected_init]: end - returning -1
[ 0.999005] Initializing XFRM netlink socket
[ 1.005152] NET: Registered protocol family 17
[ 1.011436] Key type dns_resolver registered
[ 1.018072] Registering SWP/SWPB emulation handler
[ 1.024900] registered taskstats version 1
[ 1.031025] Loading compiled-in X.509 certificates
[ 1.044411] uart-pl011 3f201000.serial: cts_event_workaround enabled
[ 1.050743] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 81, base_baud = 0) is a PL011 rev2
[ 2.059418] console [ttyAMA0] enabled
[ 2.071370] sdhost: log_buf @ (ptrval) (fdd07000)
[ 2.082636] Indeed it is in host mode hprt0 = 00021501
[ 2.182473] random: fast init done
[ 2.204682] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 2.217711] of_cfs_init
[ 2.226424] of_cfs_init: OK
[ 2.235941] Waiting for root device PARTUUID=df72fdd3-02…
[ 2.308668] mmc0: new high speed MMC card at address 0001
[ 2.321432] mmcblk0: mmc0:0001 DG4016 14.7 GiB
[ 2.332147] usb 1-1: new high-speed USB device number 2 using dwc_otg
[ 2.345638] mmcblk0boot0: mmc0:0001 DG4016 partition 1 4.00 MiB
[ 2.358102] Indeed it is in host mode hprt0 = 00001101
[ 2.430357] mmcblk0boot1: mmc0:0001 DG4016 partition 2 4.00 MiB
[ 2.442971] mmcblk0rpmb: mmc0:0001 DG4016 partition 3 4.00 MiB, chardev (246:0)
[ 2.461303] mmcblk0: p1 p2
[ 2.495041] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 2.509828] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[ 2.534402] devtmpfs: mounted
[ 2.549322] Freeing unused kernel memory: 1024K
[ 2.560781] Run /sbin/init as init process
[ 2.622133] usb 1-1: New USB device found, idVendor=0424, idProduct=9514, bcdDevice= 2.00
[ 2.636980] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.651502] hub 1-1:1.0: USB hub found
[ 2.661972] hub 1-1:1.0: 5 ports detected
[ 2.991859] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[ 3.032500] systemd[1]: System time before build time, advancing clock.
[ 3.132149] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00, bcdDevice= 2.00
[ 3.147333] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 3.164341] smsc95xx v1.0.6
[ 3.186273] NET: Registered protocol family 10
[ 3.198760] Segment Routing with IPv6
[ 3.239496] random: systemd: uninitialized urandom read (16 bytes read)
[ 3.255551] random: systemd: uninitialized urandom read (16 bytes read)
[ 3.275600] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 3.275938] smsc95xx 1-1.1:1.0 eth0: register ‘smsc95xx’ at usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:12:f0:e0
[ 3.308277] systemd[1]: Detected architecture arm.
[ 3.374018] systemd[1]: Set hostname to .
[ 3.421903] usb 1-1.4: new low-speed USB device number 4 using dwc_otg
[ 3.446887] random: systemd-sysv-ge: uninitialized urandom read (16 bytes read)
[ 3.475648] uart-pl011 3f201000.serial: no DMA platform data
[ 3.601380] usb 1-1.4: New USB device found, idVendor=046d, idProduct=c31c, bcdDevice=64.02
[ 3.617448] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.632355] usb 1-1.4: Product: USB Keyboard
[ 3.644174] usb 1-1.4: Manufacturer: Logitech
[ 3.674132] input: Logitech USB Keyboard as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:046D:C31C.0001/input/input0
[ 3.762659] hid-generic 0003:046D:C31C.0001: input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] on usb-3f980000.usb-1.4/input0
[ 3.813175] input: Logitech USB Keyboard Consumer Control as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/0003:046D:C31C.0002/input/input1
[ 3.912118] input: Logitech USB Keyboard System Control as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/0003:046D:C31C.0002/input/input2
[ 3.934488] hid-generic 0003:046D:C31C.0002: input,hiddev96,hidraw1: USB HID v1.10 Device [Logitech USB Keyboard] on usb-3f980000.usb-1.4/input1
[ 3.956666] systemd[1]: Listening on Syslog Socket.
[ 3.980901] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 4.030771] systemd[1]: Reached target Swap.
[ 4.054161] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 4.080180] systemd[1]: Listening on udev Kernel Socket.
[ 4.104592] systemd[1]: Listening on Journal Socket.
[ 4.128493] systemd[1]: Listening on Journal Socket (/dev/log).
[ 4.229667] i2c /dev entries driver
[ 4.949033] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 5.074136] systemd-journald[114]: Received request to flush runtime journal from PID 1
[ 5.385797] vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.393633] bcm2835_vc_sm_cma_probe: Videocore shared memory driver
[ 5.393651] [vc_sm_connected_init]: start
[ 5.394051] vc_sm_cma_vchi_init: failed to open VCHI service (-1)
[ 5.394064] [vc_sm_connected_init]: failed to initialize shared memory service
[ 5.403084] media: Linux media interface: v0.10
[ 5.502510] videodev: Linux video capture interface: v2.00
[ 5.544469] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.544616] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.563039] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.576917] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.579769] bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.
[ 5.588436] bcm2835_mmal_vchiq: Failed to open VCHI service connection (status=-1)
[ 5.612213] bcm2835_mmal_vchiq: Failed to open VCHI service connection (status=-1)
[ 5.612551] bcm2835_audio soc:audio: card created with 8 channels
[ 5.625916] pisound: Searching for spi device…
[ 5.625935] pisound: Found!
[ 5.731958] pisound: Reading card info failed: -22
[ 5.732006] pisound: pisnd_spi_init failed: -22
[ 5.732060] snd-rpi-pisound: probe of soc:sound failed with error -22
[ 6.858349] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 6.910589] cfg80211: Loaded X.509 cert ‘sforshee: 00b28ddf47aef9cea7’
[ 7.314680] smsc95xx 1-1.1:1.0 eth0: hardware isn’t capable of remote wakeup
[ 7.315470] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 7.535035] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SSFS
[ 8.828692] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 8.830938] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xD1E1
[ 62.644028] random: crng init done
[ 62.644040] random: 7 urandom warning(s) missed due to ratelimiting
[ 63.747097] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 63.750642] Bridge firewalling registered
[ 64.304843] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready

It seems like the BalenaFin will not take any HATs that I have over here. Status lights on the HATs never show up and my mini screens never turn on the backlight. I’m starting to suspect this might be a defective board.

Am I missing something? Do I have to ‘turn on’ GPIO pins, or power to the pins?

Thanks,
Kevitto

Hello @Kevitto ,

If the HATs are not being powered on, the most probable cause is that the fuse that protects the HAT power pins has been blown.

There’s a quick test you can perform to see if it’s indeed a blown fuse. If you switch the fuses as shown here:

and the balenaFin doesn’t power up, it means that the HAT fuse is causing the issues. This usually happens when plugging a faulty HAT or if the HAT hasn’t been properly connected.

Cheers,
Nico

The fuse has been replaced and I can confirm it works. But the PiSound doesn’t work still. I guess we’ll be looking for an alternative to the BalenaFin. Thank you for your help.

Hello @Kevitto, glad you found the problem. Could you please tell us a bit more about the issues you’re facing with the PiSound HAT?

Cheers,
Nico.

Hey @Kevitto the balenaFin is 100% compatible with the HAT specification and has its header mapped exactly as the rpi3/rpi3+ . The issue you are facing must be sw related and if you could share more info I’m pretty confident we could help figuring it out

Ok, I’ll try to give as much information as possible. We use the PiSound HAT as a sound acquisition card, it comes with a tiny software bundle to run it, in which it starts with a Bluetooth sync. I currently reinstalled Raspbian on the balenaFin for me to remove as many possible issues as I could, but the PiSound never initializes. I am running Raspbian Stretch 9.9 Lite (Linux raspberrypi 4.19.57-v7+ #1244), and the DMESG I pasted earlier is no longer the same, since the issue with the fuse was resolved.

Once installed, the software tells me the PiSound is not found, but I’ve installed about 100 of those on RPI 3B and 3B+, and I’ve never encountered this issue. I have a screen module for 3B+, and it seems to work with the GPIO pins, but not the PiSound. It states it uses 5.1V on a normal PI, don’t know if there’s something with the amount of power the BalenaFin can provide.

Thanks for all your help, ask away if ever you need any more information.

Kevin

it comes with a tiny software bundle to run it

@Kevitto thanks for the info - is this software bundle open source? can you please point it to me?

Also, can you please try with our maintained version of raspbian for the balenaFin? https://www.balena.io/fin/1.1/docs/downloads/

Yes, it’s here: https://blokas.io/pisound/install-pisound.sh
I am currently using the maintained version of raspbian for tests, because I figured if I can get that one running I can figure out what the difference is between yours and the one I’m using.