We offer many ready-to-use apps, among them a serial-over-IP (SoI) app and Modbus Gateway app.
Installing Tibbo's Ubuntu-based distribution on your LTPP3(G2) is easy and straightforward. Before starting, you'll need to prepare:
The install will take around 10-15 minutes. The steps:
The system is now ready for use. The default username and password are ubuntu/ubuntu.
If you would prefer to use SSH instead of the serial terminal, log in to the system and acquire its IP address:
You can use apt-get to install and update packages on your system just as you would on most other Ubuntu-derived distributions. Performing an update is as easy as executing the following:
After performing an upgrade of our PPA, a reboot is required. You can do so by running:
We recommend that you update your system on the first boot and on a regular basis. Included in the updates is Tibbo's Personal Package Archive (PPA) containing useful resources for the LTPP3(G2).
Included in our base image and the PPA are a variety of OOBE scripts designed to help you quickly and easily configure important parts of your system. We highly recommend updating and upgrading installed packages (as explained in the previous section) before using these scripts to ensure you always have the latest version.
If you have the Wi-Fi/Bluetooth add-on module installed on your LTPP3(G2), you can use our interactive Wi-Fi configuration script. To do so, just run:
This script automates installing and uninstalling the system's Wi-Fi driver. In addition, the script also makes it easy to scan for and associate with Wi-Fi networks, as well as see the status of the current connection.
Note: After associating with a wireless network, the system will always automatically try to connect to it when in range.
If you have the Wi-Fi/Bluetooth add-on module installed on your LTPP3(G2), you can use our interactive Bluetooth configuration script. To do so, just run:
This script automates installing and uninstalling the system's Bluetooth driver. In addition, the script also makes it easy to pair and connect the system with a Bluetooth device.
The LTPP3(G2) is equipped with two 10/100BaseT Ethernet ports, which can be daisy-chained or configured as two independent ports. We have created a script to facilitate selecting the Ethernet port mode. To run it, just enter:
VSC can be used to remotely develop, debug, and deploy your applications in Python.
Here is how to set up VSC to work with your LTPP3(G2) board. In VSC:
An embedded terminal window will open. After a few moments, it'll run your Python code.
Congratulations, you're developing and debugging on your LTPP3(G2) directly from VSC!
PinMux is a truly unique feature of the LTPP3(G2)'s Plus1 CPU. It works as a "switchboard" that dynamically connects peripherals to GPIO lines. This on-the-fly reconfiguration is fully transparent to the OS and doesn't require a reboot — much less a kernel rebuild.
We have developed a Python wrapper to facilitate using this "switchboard" functionality that allows your code to map and remap peripherals on demand. The Python wrapper for PinMux has been included in Tibbo's PPA for this distribution since May 2021. If you have an older version of the PPA, update and upgrade your system to ensure you have the latest version and then reboot:
We've created a sample application (click here to download) that uses the Python wrapper to map the lines of a serial port, which echoes any received data back to the sender. This application demonstrates the straightforward process of mapping and implementing a serial port on the LTPP3(G2) running our Ubuntu-based distribution.
Before running this application, you first need to install pyserial, a serial port extension for Python. To do so, just run:
Once pyserial is installed, you can run the application from a terminal or through VSC. Before doing so, however, make sure that it maps the board's lines to the pins corresponding to your desired serial port.
Using this sample application is simple: Connect your desired serial port on the LTPP3(G2) to a computer running serial terminal software, such as IO Ninja. You can send strings of text, which will be printed on the device's console and echoed back to the serial terminal.
For our second example, we've created a sample application (click here to download) that uses a Python wrapper to map the board's I/O lines to an I²C sensor. This application polls Tibbit #36 — a three-axis accelerometer (this Tibbit requires Tibbit #00-3, it will provide the I/O and power lines). The download includes the Python library for Tibbit #36.
If you don't have Tibbit #36 or want to use a different I²C peripheral, you will need to modify this application accordingly. Tibbit #36 was chosen because it is a more complicated I²C sensor, which means that your code will probably be simpler than this sample code.
Before running this application, you will need to install smbus2, which provides Python bindings for Linux SMBus access through i2c-dev. To do so, just run:
Now you can run the test_tbt36.py application from a terminal or via VSC by executing the following command:
Either way, you will see the sensor output printed in the terminal (VSC shown below):
V0.5.0 (released in July 2022) of our Ubuntu-based distribution added PinMux support for RS485 communications. To demonstrate this capability, we've created a sample application (click here to download) that continuously polls a Bus Probe. For this example, you'll need a BP#03, a Tibbit #05 placed in socket S1, and a Tibbit #21 in socket S2.
To run this sample, you'll need the pyserial and pymodbus packages. If you don't already have them installed, enter the following in a terminal on the LTPP3(G2):
After you've installed pyserial and pymodbus, you can run the sample application from a terminal connected to the LTPP3(G2). We recommend IO Ninja, which can connect to an LTPP3(G2) via the serial debugging port or SSH, as well as so much more.
Of course, you can always use a different tile or Bus Probe — you'll just need to modify the application accordingly.
Also added in V0.5.0 is support for user-defined interrupts: You can dynamically map any PinMuxable line as an interrupt. Currently, the functionality is limited to only edge interrupts (rising and falling exclusively).
For example, we can set I/O line 32 (the first pin of socket S3) to be a falling edge interrupt with the following command:
To test that it has been configured correctly, just trigger a state change on the pin. The easiest way to do so is plugging a Tibbit #00-3 into socket S3 and Tibbit #38 (pushbutton) into socket S4. Now, pressing the pushbutton will trigger the interrupt, which is reflected in the terminal.
While you can only have eight interrupts at one time, the magic of PinMux means that you can dynamically remap them to different lines to meet the needs of your project. If you're writing modules, just remember to release an unused interrupt before assigning a new one.
Also included in V0.5.0 is the driver for reading the Plus1 CPU's OTP memory. For detailed instructions on writing to the OTP memory, please refer to our documentation.
For a raw dump of the entire OTP memory section in hexadecimal format, just enter:
Note: Any blocks of the OTP memory that haven't been written to will show up as zeroes.
Alternatively, if you only want to see the value written to the serial number section of the OTP memory, just run:
Note: If you haven't written a serial number to the OTP memory, the Serial field will be populated with zeroes.