CL200 Series Technical Resources

This article also applies to the TM710 & TM110 model systems

Drivers and Manual

System Manual

http://static.onlogic.com/resources/manuals/OnLogic-CL200-Series-Manual-v2.pdf

Windows 10 Drivers

https://static.onlogic.com/resources/drivers/CL200Series_Win10x64.zip

BIOS Updates

VersionLink
CL200 Series – D7870A13D7870A13
Update the BIOS with the file(s) above. You can follow this how-to guide for installation instructions.

How to enable auto power on

  • Power on the CL200 and press the Esc key a few times to access the BIOS
  • Navigate to the Chipset tab
  • Change auto power on to [enable]
  • Save & Exit
  • The CL200 will now automatically turn on when power is connected

Troubleshooting

Disassembly

  • Remove the two silver Phillips screws
  • Use a flathead screwdriver or similar tool to gently lever the bottom cover off

How to clear the CMOS

If the CL200 fails to power on or boot up, clearing the CMOS can help.

Open the system following the Disassembly steps above.

  • Locate the Clear CMOS jumpers

  • Remove the black jumper from pins 6 and 4
  • Install it onto pins 4 and 2, moving it down by 1 pin
  • Wait 30 seconds
  • Restore the jumper to its original 6-4 position
  • The CMOS is now clear

mSATA/WiFi Card Installation

  • Open the system following the Disassembly steps above.
  • Install the WiFi and/or mSATA card as shown. Install the WiFi antenna pigtail cables as shown.
  • The nuts and washers are loose for illustration purposes. They should be fully hand tightened
  • Apply the thermal pad to the top of the WiFi/mSATA card. This can be located in your system’s accessories.

Reassembly

  • Hinge the bottom plate back onto the system by aligning the tabs
  • Reinstall the silver Phillips screws

Using the optional CEC module (ADP107)

The ADP107 is a module that is installed in-line with the DisplayPort outputs on configured OnLogic systems. Its purpose is to enable Consumer Electronics Control (CEC) functionality which manages the connection between the system and any connected displays according to a set of preconfigured rules. This allows command signals to be passed to the displays when the computer starts, stops, wakes, and sleeps, in a user-configurable order after a configurable time delay.

Default Behavior

The device’s default configuration is to power up displays when the system starts/wakes and power them off when the system stops/sleeps. It is also configured by default to start the computer when the connected display powers on, and to power the computer off
when the displays are powered off. The default startup delay timer is set to 5 seconds.

Driver Installation

Windows 10

Download the driver archive and extract it.
In the Windows 10 folder, there are two applications required for full functionality, the kernel driver that allows communication with the CEC module, and the user driver that keeps the module up-to-date with the system’s HDMI port addresses.
To install the kernel driver, right-click on ADP107.inf and select install. Accept any prompts that follow, then restart the system.

Linux

Download the driver archive and extract it.
Install the necessary prerequisites using:

sudo apt-get install build-essential linux-headers-uname -r make i2c-tools

In the Linux folder, you will find a kernel module that can be compiled from the command line.
From the driver package’s Linux folder, run the following commands:

make
sudo make install


Finally, restart the system. Upon reboot, you should find that a character device is loaded at /dev/adp107 that can be used to communicate with the device using the application codes included in the next section.

Application Interface

For information on controlling the ADP107 device, refer to the table in the following PDF.

https://static.onlogic.com/resources/manuals/ADP107-cec-product-manual-OnLogic.pdf

Example Code: Python

Ubuntu – Scan for HDMI addresses and power up displays
Prerequisites: python-smbus

import smbus
smbusNumber = 5
adp107Address = 0x20
physAddrOffset = 0x43
powerOnOffset = 0x4f
powerOffOffset = 0x50
ddcNumbers = [0,1]

def apd107ReadHdmiDdc(ddcNumber):
	bus = smbus.SMBus(ddcNumber)
	rawEdid = []
	hdmiAddress = [ddcNumber]
	for i in range(0, 256, 32):
    	try:
        	rawEdid += bus.read_i2c_block_data(0x50, i, 32)
    	except:
        	print "Failed to read DDC-%" % ddcNumber
        	return None
	if rawEdid[126] == 0: #no extensions after main EDID block
    	return None
	if rawEdid[130] == 4: #no data blocks present in extended EDID
    	return None

	edidIndex = 132
	blockType = 0
	blockLen = 0

	while edidIndex < (rawEdid[130] + 128):
    	blockType = rawEdid[edidIndex] >> 5
    	blockLen = rawEdid[edidIndex] & 0x1f
    	if (blockType == 3): #vendor block containing HDMI physical address
        	hdmiAddress.append(rawEdid[edidIndex+4])
        	hdmiAddress.append(rawEdid[edidIndex+5])
        	return hdmiAddress
    	edidIndex = edidIndex + blockLen + 1
    

def adp107ScanSetHdmiAddresses(bus):
	for ddc in ddcNumbers:
    	hdmiAddress = adp107ReadHdmiDdc(ddc)
    	if hdmiAddress is not None:
        	bus.write_i2c_block_data(adp107Address, physAddrOffset, hdmiAddress)

def adp107PowerOnDisplay(bus, displayNum):
	bus.write_i2c_block_data(adp107Address, powerOnOffset, [displayNum])

def adp107PowerOffDisplay(bus, displayNum):
	bus.write_i2c_block_data(adp107Address, powerOffOffset, [displayNum])

adp107Bus = smbus.SMBus(smbusNumber)
adp107ScanSetHdmiAddresses(adp107Bus)
#commands are ignored if ScanSetHdmiAddresses didn't find an HDMI address
adp107PowerOnDisplay(bus, 0)
adp107PowerOnDisplay(bus, 1)

Mounting Options

MTD103 DIN mounting

MTW103 Wall and VESA mounting bracket

  • Secure to wall using M4 screws
Updated on November 8, 2023

Was this article helpful?

Related Articles

Keep In Touch.
Subscribe today and we’ll send the latest product and content updates right to your inbox.
Subscribe