There's a number of gotchas that might prevent your Timebeat Timecard Mini from operating correctly. Here is a list of the usual suspects.
DIP-switches incorrectly set
It is possible for the switches on the timecard mini baseboard to become caught in between settings and may need a slight nudge towards their destination to complete or break the circuit.
Pi Not Booting/No HDMI Output
If the first dipswitch of the base-board is set to ON then the Raspberry Pi CM4 will not attempt a regular boot from the eMMC (on-board storage / microSD) and the board will instead present itself as a USB device accessible via the micro-USB port labeled eMMC boot (this is used typically for the purpose of flashing the eMMC or SD card).
No serial console available
Incorrectly set switches may interfere with console access. See this article for a guide to the correct DIP switch setting for your use-case and make sure you have them set correctly. (more on serial console access below).
CM4 not present
If using the Timecard Mini without a Raspberry Pi CM4 (a perfectly valid use-case) then DIP switches 2-5 must be set to ON.
The u.fl cables which connect the SMA bulkhead on the exterior of the metal bracket to the ports on the GNSS module can become disconnected, so check to make sure the cables are firmly attached.
License related issues
Stop timebeat as follows:
systemctl stop timebeat
and then run it with
/usr/share/timebeat/bin/timebeat -c /etc/timebeat/timebeat.yml -e
and watch the output for license related messages:
No license found
Cannot read license key file: open /etc/timebeat/timebeat.lic: no such file or directory
License is invalid
License expired/not running in Enterprise mode
Timebeat will not run correctly without the right license. If you see this output after starting timebeat up then the license is not running in Enterprise mode and will likely not do what you want:
2029-02-02T00:00:06.051Z INFO [License Manager] logging/external.go:94 License verified. Timebeat feature set: free
2029-02-02T00:00:06.051Z INFO [License Manager] logging/external.go:94 License issued to firstname.lastname@example.org (Your Name)
2029-02-02T00:00:06.051Z INFO [License Manager] logging/external.go:94 Enterprise features expired on 1985-10-26 01:21:00 +0000 PST
If you have this problem, obtain a free license for Timebeat here.
Satellite constellations not visible / antenna problems
No antenna connected
When you run the following commands from the host machine or when logged into the Raspberry Pi CM4:
systemctl stop timebeat
apt-get install minicom
minicom -D /dev/serial0
hit the keys: <CTRL-A> Z P C <ENTER> (to set the baud rate to 9600)
the output should look, more or less, like this:
If the output looks similar to this:
then the antenna is likely disconnected or no satellites are visible. Antennas do not work reliably indoors, although they may work intermittently.
If Timebeat is running while you try to do this you will see distorted output so make sure to stop it first.
If you want PPS to work when using a CM4 then an RJ-45 cable must be connected. Additionally you will see unexpected behaviour and/or error messages if you don't have a cable plugged in when the server is configured to serve PTP.
The CM4 configuration in /boot/cmdline.txt and /boot/config.txt are best left unaltered when commencing testing. A reboot is required if changes are made to these files. Additionally, starting with the CM4 SD card image available at timebeat.app is highly advisable.
Additionally the configuration file at /etc/timebeat/timebeat.yml requires the correct configuration for your use-case. See the Cookbook for examples of how to make it work the way you would like.
Interference Mode Active
If a service is running which sets the system clock or PHC independently of Timebeat, then Timebeat by default may run in “Interference Mode”. Possible culprits for this are system-timesync, ptp4l, chrony, ntpd.
To see which services are running at the current time, use:
systemctl -type=service -state=running
To stop them use:
systemctl stop <servicename>
To stop and disable them use:
systemctl disable <servicename>--now
No Serial Port Access
After confirming the DIP switches are set correctly
The upstream kernel MaxLinear driver is required to access the GNSS serial port, however it may not be included in your current build.
dmesg | grep tty
should yield a result something like:
[ 5.730290] 0000:82:00.0: ttyS at MMIO 0xc8000000 (irq = 69, base_baud = 7812500) is a XR17V35X
[ 5.744865] 0000:82:00.0: ttyS at MMIO 0xc8000400 (irq = 69, base_baud = 7812500) is a XR17V35X
lspci | grep XR17V35X
82:00.0 Serial controller: Exar Corp. XR17V3521 Dual PCIe UART (rev 03)
If the driver is not installed then it can be found in the upstream kernel source.
Then search for SERIAL_8250_EXAR for the requisite modules to include and make sure they're enabled.
make modules ; make modules install
insmod /usr/lib/modules/6.0.7/kernel/drivers/gpio/gpio-exar.ko /usr/lib/modules/6.0.7/kernel/drivers/gpio/gpio-exar.ko