Troubleshooting, Debugging, and More!

In this section we'll list some potential pitfalls, solutions to issues and helpful tips for each of the steps on the manual install page. If you have an issue not listed here, please report it.


This help page follows the same format as Manual Installation Instructions. Each step here corresponds to the same step on the instruction page.

Board and Lure Setup

  1. This step is fairly dependent on your setup but be sure that everything is plugged in properly and switched on. Also be sure that your GPS is getting a good signal. A clear shot of the sky from the onboard or an external antenna is ideal, however even an antenna on a windowsill will usually get a lock. Patchy locks have been known to cause occasional anomalies, however the NTPD will usually ignore this data or correct it.

  2. OS installation instructions are easy to find online and most issues have been resolved. One Minnowboard specific issue that sometimes arises is that SD cards won’t appear on the boot menu, making a boot from and SD card impossible. If this issue arises, try installing to a SATA hard drive. Alternatively, use a large flash drive to make a persistent linux boot. This will allow for any changes made to the OS or files to stay with the flash drive upon reboot.

  3. Rather than type sudo before most of these commands, it is typically easier to type sudo -i and run all the commands from a root standpoint. Remember to re-run this command after every reboot during the install process. Also verify that you have internet connection before trying to install any of these packages.

Setting up the Pulse Per Second

  1. It is recommended to copy and paste long URL’s like this one to avoid typos which cause errors. Also note that the nano command will open an empty file unless the specified file is in the current directory or it has an address.

    If your kernel version ever changes, you may need to repeat steps 1.3-2.5.

  2. A list of GPIO pin numbers can be found on the minnowboard website under the board section. Check your Kernel version to determine which number is correct for your OS as older Kernels use different numbers. To check your kernel version, either check the folder name in the modules folder or run “uname -a” in terminal.

  3. Make sure the line you add has nothing else on it. Also be sure to reboot the system for changes to take effect.

  4. At this step, if the pps isn’t showing up, it’s likely that the GPIO pin was incorrect.

  5. The 20150721 number you see on each line there is the version number, which can be found inside the dkms.conf file. Should these commands result in an error, it’s possible that the package has updated and that number (the date of publish) changed.

    Note that modprobe needs to be run everytime the system starts up.

    If the dmesg command did not give you a similar output, check the modprobe and driver installation. The lack of results means the pps isn’t being routed from the GPIO pin to pps0.

    If the PPS test keeps printing out the timeout error for more than 20 minutes or so, but the dmesg command is working and it is identifying a PPS pin, there might be an error with the PPS output itself. Check that its working by using an oscilloscope

  6. The PPS should show up in ntpq immediately after the restart of NTP, however it might show all zero values. As long as the PPS test worked, this is normal and nothing to worry about. The PPS will be zero until it has a clock to reference itself from, such as the GPS clock or internet clock.

Setting up the GPS

  1. The Serial port for devices not using the Lure can be found on the Minnowboard website. Other GPS modules might use different baud rates.

  2. If your GPS is not on Serial port 4, change ttyS4 to reflect that. Also note that this step needs to be performed every boot.

  3. On the fudge line for the gps, you can add “time2 XX.XX” to help offset the GPS time. This is done to improve accuracy by accounting the processing lag time. After a while, running ntpq -p might show that the gps offset is consistent. If this happens, add a time 2 offset roughly equal and opposite in sign to the offset you are getting. Note, though that adding an offset may require the full Minnowboard to be shut down and the GPS to be turned off to take full effect (aka remove the power).

  4. If you don’t see the GPS in the list, or it’s not printing any times, check your system log by running:

    Command to run in terminal

    cat /var/log/syslog

    Towards the bottom few lines, if you see "apparmor = DENIED", apparmor is blocking the NTPD. To fix this, run:

    Commands to run in terminal

    nano /etc/apparmor.d/usr.sbin.ntpd

    Scroll to the bottom and add "capability ipc_owner" and save the file. Restart the NTPD and the error should be gone.

  5. Be sure you either manually re-run the needed linking commands after reboot or added a script to the rc.local file before rebooting. The system will now attempt to sync the GPS with the PPS. This takes quite some time usually. During the first 5 minutes (give or take), ntpq -p may output all zero values for the PPS and/or GPS. After a few minutes, actual values will appear in the offset and jitter columns. These will fluctuate greatly as they hone in on a stable value.

    It might be helpful to run a script to automatically run the ntpq -p command ever so often to check the clock locking and tuning process. Here's a script you can use to run the command every 15 seconds.

    Script Code

    while true; do
    ntpq -p
    sleep 15

Broadcasting the Time

  1. Make sure you don’t use your IP but rather the broadcast IP for this to work properly. If you just want other computers to directly link to the Minnowboard, then use the board’s IP.

  2. Note that a network computer which is using the broadcast will not show up in the list of connected devices, however one that is specifically called from the Minnowboard will.

Final Steps

  1. You might see the script run when the Minnowboard shuts off. Don't worry, it's harmless.

  2. When you reboot, you can check in /dev/ to see if pps0 and gps0 are present. If yes, the boot file worked. If not, the rc.local file didn't run the script. Check for typos as any little error will prevent it from working.