If you purchased your OctoClock device before Ethernet functionality was introduced, or if your unit's bootloader has somehow become corrupted, you must burn the bootloader onto the device before you can load the primary firmware.
To load the bootloader onto the OctoClock, two things are needed:
Connect the AVR programmer to J108, as specified on the schematics. Once you verify that the programmer is properly connected, run the following commands to burn the firmware:
cd <install path>/share/uhd/images avrdude -p atmega128 -c <programmer name> -P usb -U efuse:w:0xFF:m -U hfuse:w:0x80:m -U lfuse:w:0xFF:m -U flash:w:octoclock_bootloader.hex:i
Note: On Linux, sudo avrdude ...
might be necessary to gain access to the programmer.
Once the bootloader has been burned, power-cycle your OctoClock device and refer to the below instructions on burning the OctoClock's primary firmware.
To load firmware onto the OctoClock, you must use the octoclock_firmware_burner
utility, specifying the IP address of the OctoClock device, as follows:
octoclock_firmware_burner --addr=192.168.10.3
The OctoClock communicates with the host machine at the UDP layer over Ethernet. The default device of the OctoClock is 192.168.10.3
. You will need to configure the host machine's Ethernet interface with a static IP address to enable communication. An address of 192.168.10.1
and a subnet mask of 255.255.255.0
is recommended.
Note: When using UHD software, if an IP address for the OctoClock is not specified, the software will use UDP broadcast packets to locate the OctoClock. On some systems, the firewall will block UDP broadcast packets. It is recommended that you change your firewall settings.
You may need to change the OctoClock's IP address for various reasons.
To change the OctoClock's IP address, run the following commands (using the default IP address as an example):
cd <install path>/lib/uhd/utils ./octoclock_burn_eeprom --args="<optional device args>" --values="ip-addr=192.168.10.3"
There are two ways to address the OctoClock from UHD software: the IP address, and the serial.
To use the IP address, address it as follows:
"addr=<ip address>"
If you want to use multiple OctoClock devices, address it as follows:
"addr0=<ip address 1>,addr1=<ip address 2>"
To use the serial, address it as follows:
"serial=<serial>"
The LEDs on the front panel show the current status of the device. Each LED is described below:
The front panel switch, marked Primary Ref determines which reference the OctoClock will prefer to use. If it is receiving both an internal and external reference, the device will use whichever one the switch specifies.
However, if it is only receiving an internal reference, it will use this reference no matter what position the switch is in. The same applies for an external signal.
The following sensors are available on both the OctoClock and Octoclock-G; these can be queried through the API (see uhd::usrp_clock::multi_usrp_clock::get_sensor()).
ext_ref_detected:
whether or not the device detects an external referencegps_detected:
whether or not the device detects an internal GPSDOusing_ref:
which reference the device is using (internal or external)switch_pos:
the position of the front switch (internal or external)On the OctoClock-G, the following sensors are added:
gps_gpgga:
the latest GPGGA string sent by the GPSDOgps_gprmc:
the latest GPRMC string sent by the GPSDOgps_time:
the time reported by the GPSDOgps_locked:
whether or not the GPSDO is locked (true/false)gps_servo:
the latest debug trace information sent by the GPSDO