CL210 Technical Resources

This article also applies to the TM110.

Drivers and Manual

System Manual

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

Windows 10 Drivers

https://drive.google.com/open?id=1u6THLOvVxGRX5_3LzVJnKZjjtDakcvSE

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

How to clear the CMOS

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

  • Remove the two silver Phillips screws
  • Use a flathead screwdriver or similar tool to gently lever the bottom cover off
  • 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

WiFi Card Installation

  • Install the WiFi card and 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 card

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)
Updated on June 19, 2020

Was this article helpful?

Related Articles

Need Additional Support?
Can’t find the answer you’re looking for? Don’t worry, we’re here to help!
Contact Support