DLP® Pico™ Display Projector EVM-BeagleBone Black - Review

Table of contents

RoadTest: DLP® Pico™ Display Projector EVM-BeagleBone Black

Author: fvan

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Not entirely satisfied by the BeagleBone Black's performance, I tried swapping it out in favour of the Raspberry Pi 3B+.

What were the biggest problems encountered?: No I2S audio when the EVM is connected was the biggest problem for my project. The loose focus pin should be improved as well.

Detailed Review:

This post represents my review for the DLP® Pico™ Display Projector EVM-BeagleBone Black RoadTest.


Rather than performing a classic review, I proposed to build a project around the BeagleBone Black and the projector module and share my thoughts and observations on both devices as the project progresses. At the same time, the post should give insights on how I break down and tackle such a project. The resulting post could then act as a getting started guide or how-to for certain topics. The idea for the project I pitched, is to create a self-contained video projector using this module in combination with the BeagleBone Black provided for this review, but also to add sound, battery power and a 3D printed enclosure to keep it all together.


Let's get started!





The kit arrived in a big box (banana for scale), with everything well protected. One thing that immediately caught my eye, was the warning on the box stating the following:

For evaluation only

Not FCC approved for resale



This warning was repeated again with a more detailed document inside the package.


The kit contained four items:

  • BeagleBone Black (Rev. C)
  • DLP Pico Display Project evaluation module
  • 5V/3A DC barrel jack power supply (with US cord)
  • mini USB cable


The module was pre-mounted on the BeagleBone Black, contained in an anti-static bag. There was no packaging or documentation for the module, except for a little card.




As I removed the BeagleBone Black and module from the anti-static bag, I noticed something about the module looked different from the pictures I had seen so far:




A simple heatsink was pre-installed, which is nowhere to be seen in the documentation or pictures of the module. The documentation does mention the module can get rather hot when operating at full brightness:

The DLPDLCR2000EVM optical engine can be driven to 30 lumens at maximum current settings, but will also run at high

temperatures. It is recommended that the user add a heatsink to the system when running beyond typical operating conditions to

maintain the same unit temperature.


BeagleBone Black


Operating System


In order to use the module with the BeagleBone Black, a recent software image needs to be used. That software image can be downloaded from the BeagleBoard website and then flashed to a microSD card.


I've used the Debian Stretch with desktop image, which I found on the latest images page.

Stretch LXQT (with graphical desktop) for BeagleBone via microSD card (775MB)


The microSD card needs to be at least 4GB, but I'll be using an 8GB one and increase the size of the filesystem.


To burn the image to the microSD card, I've used Etcher. There's no need to unzip the downloaded image first, Etcher takes care of it.



After flashing the microSD card, it can be inserted in the BeagleBone Black.


Operating system: check!




To power on and connect to the BeagleBone Black, connect the miniUSB cable to the BeagleBone Black and your PC. A new network interface will show up, creating a network connection between your PC and the BeagleBone Black over USB.


My computer received IP address, with as subnet mask.
This means there are only two usable IP addresses in the subnet: and (.0 is the network address, .3 broadcast). The BeagleBone Black should be accessible on then.


After confirming the BeagleBone Black can be pinged, it's possible to connect via SSH. The username is debian, password is temppwd.


Fredericks-Mac-mini:Desktop frederickvandenbosch$ ssh debian@
debian@'s password: temppwd
Linux beaglebone 4.9.78-ti-r94 #1 SMP PREEMPT Fri Jan 26 21:26:24 UTC 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.


Connectivity: check!


Filesystem Expansion


By default, after flashing the OS image to the microSD card, the system is partitioned to use 4GB of space. Because I used a 8GB card, I'd like to expand the filesystem to make use of all available capacity.


The original partitioning and sizing is the following:


debian@beaglebone:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            215M     0  215M   0% /dev
tmpfs            49M  5.4M   44M  12% /run
/dev/mmcblk0p1  3.3G  2.7G  402M  88% /
tmpfs           243M     0  243M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           243M     0  243M   0% /sys/fs/cgroup
tmpfs            49M  4.0K   49M   1% /run/user/1000


The size of /dev/mmcblk0p1 is limited to 3.3GB.


First, launch fdisk:


debian@beaglebone:~$ sudo fdisk /dev/mmcblk0


Show the current partitioning.


Command (m for help): p

Disk /dev/mmcblk0: 7.4 GiB, 7985954816 bytes, 15597568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x531bb24f

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1 *     8192 6963199 6955008  3.3G 83 Linux


Delete the partition and recreate it. Be sure to use the same start sector as the original partition! Use the default for the last sector, which means using maximum capacity.


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n

Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-15597567, default 2048): 8192
Last sector, +sectors or +size{K,M,G,T,P} (8192-15597567, default 15597567):

Created a new partition 1 of type 'Linux' and of size 7.4 GiB.
Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: y

The signature will be removed by a write command.


Show the new partition to confirm the new size and write the partition table.


Command (m for help): p

Disk /dev/mmcblk0: 7.4 GiB, 7985954816 bytes, 15597568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x531bb24f

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       8192 15597567 15589376  7.4G 83 Linux


Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).


Reboot the system to use the new partition table.


debian@beaglebone:~$ sudo reboot


The partition has been resized, but the filesystem isn't. This can be done with the following command:


debian@beaglebone:~$ sudo resize2fs /dev/mmcblk0p1

resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p1 is now 1948672 (4k) blocks long.


The size of /dev/mmcblk0p1 has been increased to 7.3GB:


debian@beaglebone:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            215M     0  215M   0% /dev
tmpfs            49M  5.4M   44M  12% /run
/dev/mmcblk0p1  7.3G  2.7G  4.3G  39% /
tmpfs           243M     0  243M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           243M     0  243M   0% /sys/fs/cgroup
tmpfs            49M  4.0K   49M   1% /run/user/1000


Expanded filesystem: check!




The BeagleBone Black has a single USB port, ideal for a Wi-Fi dongle (unless you are using the BeagleBone Black Wireless variant).


Setting up the Wi-Fi can be done through a set of command line options of the connmanctl application:


debian@beaglebone:~$ sudo connmanctl

connmanctl> tether wifi off
Error disabling wifi tethering: Already disabled

connmanctl> enable wifi
Error wifi: Already enabled

connmanctl> scan wifi
Scan completed for wifi

connmanctl> services
    TelenetWiFree        wifi_801f02af042c_54656c656e6574576946726565_managed_ieee8021x
    telenet-7DE6DBC      wifi_801f02af042c_74656c656e65742d37444536444243_managed_psk

connmanctl> agent on
Agent registered

connmanctl> connect wifi_801f02af042c_74656c656e65742d37444536444243_managed_psk
Agent RequestInput wifi_801f02af042c_74656c656e65742d37444536444243_managed_psk
  Passphrase = [ Type=psk, Requirement=mandatory, Alternates=[ WPS ] ]
  WPS = [ Type=wpspin, Requirement=alternate ]
Passphrase? enter_your_passphrase_here
Connected wifi_801f02af042c_74656c656e65742d37444536444243_managed_psk

connmanctl> quit


Confirm correct setup by verifying an IP address was assigned on the wireless interface:


debian@beaglebone:~$ ifconfig wlan0
wlan0: flags=-28605<up,broadcast,running,multicast,dynamic>  mtu 1500
        inet  netmask  broadcast
        inet6 2a02:1812:2469:200:821f:2ff:feaf:42c  prefixlen 64  scopeid 0x0
        inet6 fe80::821f:2ff:feaf:42c  prefixlen 64  scopeid 0x20
        ether 80:1f:02:af:04:2c  txqueuelen 1000  (Ethernet)
        RX packets 550  bytes 119565 (116.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 135  bytes 20104 (19.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


Wireless connectivity: check!


I2S Audio


Inspired by 's BBB - Building a DAC and BBB - Audio notes , I wanted to get audio output via a 3W I2S Mono Amp from Adafruit.


Unfortunately, I was encountering problem from the very beginning, as no soundcard was detected:


debian@beaglebone:~$ aplay -l
aplay: device_list:270: no soundcards found...


Then I remembered my struggle with HDMI audio during the BeagleBone Black Radio Challenge, as described in Beaglebone Black Radio Challenge - Part 2: Getting the different components to work


HDMI Audio only works at certain resolutions. But because of the DLP2000 cape, the resolution is forced to 640x360 as demonstrated below.


debian@beaglebone:~$ xrandr -d :0 -q

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 360, current 640 x 360, maximum 640 x 360
default connected 640x360+0+0 0mm x 0mm
   640x360        0.00*


To try and get to the bottom of this, I removed the DLP2000 cape and rebooted the BeagleBone Black.


The resolution changed:


debian@beaglebone:~$ xrandr -d :0 -q

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 1024 x 768, maximum 1024 x 768
default connected 1024x768+0+0 0mm x 0mm
   1024x768       0.00*


And the HDMI soundcard was back ...


debian@beaglebone:~$ aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: Black [TI BeagleBone Black], device 0: davinci-mcasp.0-hdmi-hifi.0 hdmi-hifi.0-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0


I wired the DAC to the BeagleBone Black as follows:

  • DIN <> P9_28
  • LRC <> P9_29
  • BCLK <> P9_31
  • GND <> P9_1
  • VIN <> P9_3



debian@beaglebone:~$ mplayer test.mp3

Creating config file: /home/debian/.mplayer/config
MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing test.mp3.
libavformat version 57.56.101 (external)
Mismatching header version 57.56.100
Audio only file format detected.
Load subtitles in ./
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 256.0 kbit/18.14% (ratio: 32000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
[AO_ALSA] alsa-lib: pcm_plug.c:909:(snd_pcm_plug_hw_refine_cchange) Unable to find an usable client format
[AO_ALSA] alsa-lib: pcm_plug.c:913:(snd_pcm_plug_hw_refine_cchange) Format: S16_LE
AO: [alsa] 32000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 308.6 (05:08.5) of 309.0 (05:09.0) 11.1%

Exiting... (End of file)



In conclusion, I2S is possible with the selected DAC, only not out of the box in combination with the cape. More research is required to get it working in combination with the cape ...


An alternative would be to use Bluetooth audio instead, with a portable speaker.


Bluetooth Audio


Plan B for audio. Using a Bluetooth USB dongle and a portable Bluetooth speaker (JBL Go), I should be able to get the desired output. An added bonus is that the speaker has its own volume controls ...



To pair and connect the speaker to the BeagleBone Black, I used the "bluetoothctl" application.


Start the program, register the agent and start scanning for BT devices:


debian@beaglebone:~$ sudo bluetoothctl

[bluetooth]# agent on
Agent registered

[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:DA:71:0F Discovering: yes
[NEW] Device 40:EF:4C:4F:7E:DF JBL GO


Once the desired device is discovered, pair and trust it:


[bluetooth]# pair 40:EF:4C:4F:7E:DF
Attempting to pair with 40:EF:4C:4F:7E:DF
[CHG] Device 40:EF:4C:4F:7E:DF Connected: yes
[CHG] Device 40:EF:4C:4F:7E:DF UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[CHG] Device 40:EF:4C:4F:7E:DF UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 40:EF:4C:4F:7E:DF UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 40:EF:4C:4F:7E:DF UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 40:EF:4C:4F:7E:DF UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[CHG] Device 40:EF:4C:4F:7E:DF ServicesResolved: yes
[CHG] Device 40:EF:4C:4F:7E:DF Paired: yes
Pairing successful

[bluetooth]# trust 40:EF:4C:4F:7E:DF
[CHG] Device 40:EF:4C:4F:7E:DF Trusted: yes
Changing 40:EF:4C:4F:7E:DF trust succeeded


Finally, connect to the device:


[bluetooth]# connect 40:EF:4C:4F:7E:DF
Attempting to connect to 40:EF:4C:4F:7E:DF
Failed to connect: org.bluez.Error.Failed


Unfortunately that failed. Using the power of Google, I discovered this is related to a missing audio package. I installed it, and connecting succeeded!


debian@beaglebone:~$ sudo apt-get install pulseaudio-module-bluetooth


[bluetooth]# connect 40:EF:4C:4F:7E:DF
Attempting to connect to 40:EF:4C:4F:7E:DF
[CHG] Device 40:EF:4C:4F:7E:DF Connected: yes
Connection successful


Play some music:


debian@beaglebone:~$ mplayer test.mp3


Yay! Bluetooth audio!



DLP LightCrafter Display 2000


With the BeagleBone Black set up, it's time to focus on the evaluation module.


Initial Power On


The module comes with a 5V/3A power supply, which can be connected directly to the cape. While connected to the BeagleBone Black though, applying power to the cape is not sufficient to get it to power on (it is when disconnected from the BeagleBone black). That's a pity, as a beefy power supply as the one provided could easily power both.


Powering the BeagleBone Black via the miniUSB interface causes the projector to power on and display a default image.


While the projected image is visible in a normally lit room, the colours really pop when used in the dark. Putting the projector 1 meter away from the wall, the image is approximately 60*35 cm.


At 2.5 meters from the wall, the image is approximately 155*90 cm. The pixels can be distinguished from up close.



A tiny handle on the side of the projector is used to focus the image. Unfortunately, it is very sensitive: the slightest touch is enough to get it out of focus. That also means it is quite hard to get it to focus reliably.



According to this thread, other users have reported this as a problem. The answer was the following:

Typically, the focus pin that is being moved is augmented with a mechanical system in the end product that results in an external knob or slider. The issue you may be experiencing could be the normal softness on the pin itself. The DLP2000 evaluation module is designed to be an evaluation module for developers to experiment with new display solutions.


We are working on an off-the-shelf solution for our early adopters over the next few weeks and will keep you posted.

Later, a solution/workaround involving the replacement of the screw by another one was suggested, and even mentioned to be included in future kits:

As a note to other E2E users, we are planning to pack-in these additional components to our DLPDLCR2000EVM kits down the road to make this focus lever modification more accessible out of the box.

As this wasn't included in this kit, I reached out to see if I could get my hands on the replacement screw to fix this issue (24 Jan).


A bit more than a month later (9 Mar), a big box showed up via DHL, containing a small screw and washer, as described in the thread. I love the fact that Texas Instruments is committed to helping its users, but the packaging is ridiculous and needs to be addressed!


With the new screw in place, there is still no fine control, but as the assembly no longer moves with the slightest touch, it is indeed more stable. A small, but useful improvement.



I let the projector run for 30 minutes to check the temperature. Even with the heatsink, the module is hot to the touch. Using an IR thermometer, I measured temperatures up to 49.8 °C.



Running the Demo


An example application is provided in the "/opt/scripts/device/bone/capes/DLPDLCR2000" folder on the BeagleBone Black. The README file contains the instructions to install it:


Use of the provided Python scripts requires the accompanying library:


To install on BeagleBone Black, do:

$ tar -xvf dlp_lightcrafter-1.0.19.tar.gz
$ cd dlp_lightcrafter-1.0.19
$ sudo python setup.py install

From there, execute individual python scripts to initiate tests for the EVM.


I followed the instructions, which took less than 30 seconds to execute, and then ran the example:


debian@beaglebone:/opt/scripts/device/bone/capes/DLPDLCR2000$ export DISPLAY=:0
debian@beaglebone:/opt/scripts/device/bone/capes/DLPDLCR2000$ python MplayerTest.py


A short demo video, showing some aquarium fish, started playing.


Video Playback


Time to test with my own video.


First, ensure the DLP2000 is projecting the desktop, and export the display for mplayer to use:


debian@beaglebone:~$ i2cset -y 2 0x1b 0x0b 0x00 0x00 0x00 0x00 i
debian@beaglebone:~$ i2cset -y 2 0x1b 0x0c 0x00 0x00 0x00 0x1b i
debian@beaglebone:~$ export DISPLAY=:0


I downloaded the nHD version of Big Buck Bunny to test with, and uploaded it to the BeagleBone Black. Using mplayer, I attempted to play the video:


debian@beaglebone:~$ mplayer -fs BigBuckBunny_640x360.m4v


It starts playing but the audio is completely out of sync, and following warning pops up in the console:


           **** Your system is too SLOW to play this!  ****

Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver
  - Try -ao sdl or use the OSS emulation of ALSA.
  - Experiment with different values for -autosync, 30 is a good start.
- Slow video output
  - Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
  - Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
    e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
  - Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
  - Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
  - Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.


Testing the suggested workarounds, a working command turned out to be:


debian@beaglebone:~$ mplayer -fs -vo x11 -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all BigBuckBunny_640x360.m4v


The video playout is not entirely smooth, but perfectly watchable and audio is in sync.



I created a simple script to combine all commands in one:


#!/usr/bin/env python

from os import system
from sys import argv

system("i2cset -y 2 0x1b 0x0b 0x00 0x00 0x00 0x00 i")
system("i2cset -y 2 0x1b 0x0c 0x00 0x00 0x00 0x1b i")
system("export DISPLAY=:0")

system("mplayer -fs -vo x11 -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all " + argv[1])


Which can be run as follows:

debian@beaglebone:~$ ./mplayer.py BigBuckBunny_640x360.m4v



Battery Power


With video and audio playback confirmed to be working, time to work on the portable aspect of the project by focusing on the power source first.


First step is to have the cape power the BeagleBone Black, so only a single power source needs to be connected.


Measuring pins on the BeagleBone Black (left, source), I concluded that pins P9_5 and P9_6 are directly connected to the barrel jack's 5V input. On the cape (right, source), matching pins P2_5 and P2_6 are not connected. Hence, the cape does not power the BeagleBone Black, or vice versa.


However, there is header J3 which is directly connected to the cape's barrel jack 5V input. As the GND pins are connected between the BeagleBone Black and the cape, all that remains is to bridge the 5V pins between the two.


From header J3, I made a connection to P2_6/P9_6 using a jumper wire.




Applying power to either the BeagleBone Black or the cape, now ensures both are powered from the same source.


Second step is to measure the current draw by the display and BeagleBone Black.


The measurement on the left, 290mA, is the display cape only (without 5V jumper wire). The measurement on the right, 590mA, is both the BeagleBone Black and display cape (with 5V jumper wire).



The values are promising, as they are well under 1A, meaning I could probably make use of an Adafruit Powerboost 1000C to power the devices from battery. Of course, this is in idle state, I'd have to measure in a loaded state as well.


These measurements raised the following question though: why would the evaluation module come with a beefy 5V/3A power supply?


Third step is to test the Powerboost.


I'm using a 6600mAh 3.7V Lithium Ion battery pack as power source. This should keep the whole thing powered at least a few hours.


The battery pack connects to the Powerboost's JST connector, and the Powerboost connects to the BeagleBone Black and EVM via J3's GND pin and P2_5/P9_5. A switch can be added to the Powerboost's EN pin to enable/disable it, and the battery pack can be recharged via the microUSB port.




First thing I tried with my portable BBB and EVM? Messing with the cat of course ...



Putting Things Together


First step is to attach and connect the battery pack to the Beaglebone Black.


I designed a cape-sized plate in Fusion 360 to print on my CEL Robox 3D printer, based on the dimensions I found online (source). I added two slots in order to be able to tie the battery pack to the plate.



Using two sets of four 11mm standoffs, enough clearance is created for the battery pack. Some zip ties are used to fasten the pack to the printed plate.



Second step is design (parts of) an enclosure that can protect the device, while at the same time keep all the necessary ports accessible.


I designed two parts, one to protect the top, the other to protect the bottom. It screws into the available mounting holes, securing everything in place.

Slots are foreseen to allow the heat to escape from the top part, a slot in the bottom part provides access to the charging port of the PowerBoost.


Files on Thingiverse.




Third step is the final assembly for this project using nylon screws.



Fourth step: enjoy the movie!





The DLP LightCrafter Display 2000 is a fun and useful addition to the BeagleBone ecosystem.

image plug and play video projector

image good quality image (when focused) with bright colours

image relatively low power, can be battery powered


But it is still an evaluation module, with some disadvantages (when combined with BeagleBone Black).

image the focus pin is really impractical and too sensitive to use reliably. The workaround is an improvement, but not a real solution.

image the BBB is missing that extra "oomph" for smooth video playback applications
image the side effect of losing I2S audio, which is more a BBB problem, is annoying but not without workarounds


Some questions/remarks:

image why the need for such a beefy power supply?

image the documentation will get you started and projecting video, but I found myself having to browse the support forums to find answers to other questions such as the focus pin, audio support or running it on other platforms

image packaging of the replacement screw was ridiculous and should be addressed


By replacing the BeagleBone Black by the BeagleBone Black Wireless, the USB splitter and dongles would no longer be required and would make the final solution look cleaner.


Bonus: Combined with Raspberry Pi 3B+!


I couldn't help but be slightly annoyed by the BeagleBone Black underperforming, so I decided to try and run the DLP LightCrafter Display 2000 on my Raspberry Pi 3B+.


Credits go to Philip Hodgers, whose post I found on TI’s E2E forum, for figuring out the wiring and config parameters to get the projector to work via the Pi’s DPI interface.




The following block needs to be appended to /boot/config.txt. This can be done straight from the Raspberry Pi, or while the SD card is mounted on the PC.


# Add support for software i2c on gpio pins
# DPI Video Setup
hdmi_timings=854 0 14 4 12 480 0 2 3 9 0 0 0 60 0 32000000 3


What this does is:

  • move the I2C interface to pins not used by the DPI interface
  • define the video output format and timing information




The wiring is not difficult, but there are quite a lot of connections to make (27 to be exact). It is important to take your time and double check every connection before powering on the Raspberry Pi.


Here’s how the EVM's pins map to the Raspberry Pi’s GPIO:


I’ve added P2_6 (5V) via GPIO pin 2 to power the EVM from the Pi or vice versa. A bridge is then required on the EVM from P2_6 to J3 using the M-F jumper wire. The EVM’s 5V/3A power supply is plenty to power both devices.


The resulting wiring should resemble the pictures below. I’ve used three stacked standoffs to create enough clearance while keeping everything in place.


Video & Audio


After applying power, the EVM will display a default splash screen. Some commands need to be passed via its I2C interface to display the Pi’s desktop.


This can be automated to be executed at every boot, by adding these commands to /etc/rc.local before the “exit 0” command:


pi@raspberrypi:~ $ sudo nano /etc/rc.local
sudo i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x13 i
sudo i2cset -y 3 0x1b 0x0b 0x00 0x00 0x00 0x00 i
exit 0


These commands configure the EVM to match the configuration specified earlier in /boot/config.txt, and change the input source.


Finally, the easiest way to get audio running, is probably to use a Bluetooth speaker. It’s easily set up too.

  • click on the Bluetooth icon, and select “Add Device …”
  • put your speaker in discovery mode, it should appear in the list
  • click “Pair”
  • once pairing is successful, right-click on the audio icon and select the speaker




That’s it! You should now have audio and video running!


You can connect to the Pi via VNC to start YouTube for example, and start enjoying your favourite content on the biggest screen in the house …


  • (attention my english is not very good) i'm french


    Hello, I allow myself to come to you because my display on raspberry p13 + is unstable. I have everything installed as explained. I modified the config.txt file. The display on the projector only appears when I type these lines


    sudo i2cset -y 3 0x1b 0x0c 0x00 0x00 0x00 0x13 i

    sudo i2cset -y 3 0x1b 0x0b 0x00 0x00 0x00 0x00 i


    I also put these lines in the /etc/rc.local file


    I do not have the display on the projector at the start of the raspberry and nothing when I play a video.


    But the poster appears 1 minute and then disappears. Do you have a solution.

  • Hi Colleagues

    #Problem with booting


    I have own program in python which should be run with booting Beaglebone Black +TI DLP EVM2000. Problem is how and where to set the command:  “export DISPLAY=:0”

    I've trayed to do this using  crontab -e (@reboot… &) and scripts.sh with
    python application (where two commands exist: import os  and os.system (“export DISPLAY=:0”) – but without success .

    I hope for your help – thanks in advance

    Mick, Poland  

  • Hi.

    I connected my DLP2000 to a Raspberry Pi 3 B+.

    I'm trying to set the resolution to the native resolution (640x360). I'm running Raspbian and I can surprisingly see in Raspberry Pi configuration that the resolution is the "Default 720x480" although I can see that a "854x480" image fits perfectly in the screen (without stretch).

    When I run the command "xrandr", I see this message: "xrandr: Failed to get size of gamma for output default ". So, I can't change the size: "Screen 0: minimum 854 x 480, current 854 x 480, maximum 854 x 480" (??????)

    Nothing to do running "cvt 640 360"  and  "xrandr --newmode" with the parameters that cvt gives me (I get the same message: Failed to get size of gamma for output default).


    I'm trying to change the resolution of 854x480 to the native resolution of 640x360, because I have to project the real pixels that the projector has, with no interpolations by the operating system. Is there a way to do that?


  • I have one on the way as well. It should be arriving soon ...

  • Can you share the same, as I had faced the same issue and I was pretty disappointed after 4 Hours in wiring and rewiring and finally landing up in an skewed image.



    GS Gill

  • Wanted to add:   Yes, I travel with a breadboard and parts.

    While researching PCB makers, I stumbled across MickMake's Tindie page, where he was selling PCB's that mate the DLP with a Raspberry Pi Zero.  Knowing that the RPi0 has the same 40-pin connector as the RPi3B+, I grabbed one.  I haven't had time to solder it together but I'm quite optimistic that it'll solve the interference/skewing problem that the DLP was experiencing with my low-end breadboard, as well as moving PCB manufacturer further down on my "to learn" list.

  • Okay, I wasn't sure what level of activity you may have on the TI forums.  Good information is good information.  I would think they would like to use it.  :-)

  • I suppose someone at TI will be reading these reviews and see if there's anything relevant for them to link to?


    I've shared it on twitter and facebook, and tagged them when I published the review, but no reaction whatsoever from their side (like/retweet/comment).

  •   I wonder if there is a way for T.I. to update their tutorials/guides by adding your review as a starting point for current testers.  I think you steps would be of great interest to people trying it out, especially as when I attempted to use just their guides I saw that they were outdated and incomplete.



    I know areas I want to continue looking at are:

    1. seeing if it is viable to get the BBB tweaked enough to consistently use it for media playing.

    2. BBB Wireless

    3. RPI implementation

    4. Then a comparison of all of the above to see which provides the best bang for buck.