<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bitwizard.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rew</id>
	<title>BitWizard Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://bitwizard.nl/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rew"/>
	<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php/Special:Contributions/Rew"/>
	<updated>2026-04-05T18:18:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4988</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4988"/>
		<updated>2025-12-20T12:00:16Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* output mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
== DMX input on Linux ==&lt;br /&gt;
&lt;br /&gt;
The Unix-derived way of handling tty/uart makes it impossible to do DMX input from userspace. So this option has existed in the hardware for ages, but for Linux there was no software support for DMX input. &lt;br /&gt;
&lt;br /&gt;
I have recently  (september 2024) written a driver for the UART in userspace that will actually do DMX input and deliver the DMX universe as a memory mappable file. From there it is easy to export it say to OLA, and hopefully QLC+. &lt;br /&gt;
&lt;br /&gt;
This is a hardware driver, so it depends on the hardware. I&amp;#039;ve tested it on raspberry pi 3, and that works. I expect minor changes for other versions. It is not worth my trouble if nobody uses it, so if you need it, please let me know. I&amp;#039;ll then make sure it works on YOUR raspberry pi and write some more documentation.&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. .... link is dead :-( See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To simplify a few steps I recommend to just install ola from the distribution. &lt;br /&gt;
We won&amp;#039;t use the actual olad binary, but it arranges a few things that are useful. &lt;br /&gt;
&lt;br /&gt;
First this installs the scripts to have ola start at &lt;br /&gt;
system boot. Also this will add the olad user we need to run the daemon under. &lt;br /&gt;
We do this before compiling&lt;br /&gt;
and installing ola from source so that our freshly compiled ola will overwrite&lt;br /&gt;
the system binaries with a working one. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
If you haven&amp;#039;t already done so, edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 sudo nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third and last line. Then: &lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources:&lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ola deamon should run under user &amp;quot;olad&amp;quot;. Adding that is simple enough: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser --system olad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. (at least, &lt;br /&gt;
that&amp;#039;s what happened on mine :-) ) &lt;br /&gt;
&lt;br /&gt;
Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad (the one in the bullseye distribution) will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: The build in bullseye has defines and build flags that result in the baud-rate-setting &lt;br /&gt;
code thinking that the calls needed to set the baud rate are not available. In the latest&lt;br /&gt;
ola version the conditions that cause the code to think it isn&amp;#039;t available have changed a bit&lt;br /&gt;
and the &amp;quot;we can&amp;#039;t change the baud rate because at compile time the calls weren&amp;#039;t available&amp;quot; &lt;br /&gt;
code now prints an error message instead of just returning: &amp;quot;couldn&amp;#039;t change it for some reason&amp;quot;&lt;br /&gt;
resulting in the above &amp;quot;failed to set baud rate&amp;quot; message without further explanation. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. &lt;br /&gt;
(also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked. &lt;br /&gt;
This hopefully happens in a future debian/raspberry pi OS version).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode This is done by making GPIO18 an output and programming it to be high. &lt;br /&gt;
&lt;br /&gt;
The raspberries over the years have had various methods to influence the GPIO pins of the CPU running the show. In case they change it again it might be necessary to google for how to do it from now on. If you find I need to update this again, a tip is appreciated! (Thanks Richard!). &lt;br /&gt;
&lt;br /&gt;
On the most recent operating system releases, it seems you can configure the GPIO pin to be output-high, once and for all by adding: &lt;br /&gt;
&lt;br /&gt;
 gpio=18=op,dh&lt;br /&gt;
&lt;br /&gt;
to /boot/firmware/config.txt . On older OS releases: &lt;br /&gt;
&lt;br /&gt;
I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4987</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4987"/>
		<updated>2025-11-17T13:33:50Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;technical drawing&amp;quot; of the board is available here: https://bitwizard.nl/wiki/index.php/File:Stm32_devel_bordje.png&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=File:Stm32_devel_bordje.png&amp;diff=4986</id>
		<title>File:Stm32 devel bordje.png</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=File:Stm32_devel_bordje.png&amp;diff=4986"/>
		<updated>2025-11-17T13:32:22Z</updated>

		<summary type="html">&lt;p&gt;Rew: STM32 development board. Board outline and sizes (most in mil, some in mm where indicated.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
STM32 development board. Board outline and sizes (most in mil, some in mm where indicated.)&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4985</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4985"/>
		<updated>2025-11-17T12:10:12Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SV2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4984</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4984"/>
		<updated>2025-11-17T12:10:00Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* I2C2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4983</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4983"/>
		<updated>2025-11-17T12:09:55Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* I2C1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4982</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4982"/>
		<updated>2025-11-17T12:09:47Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* UART */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4981</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4981"/>
		<updated>2025-11-17T12:02:03Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more).&lt;br /&gt;
&lt;br /&gt;
For those who want to design an add-on board, the connector positions are given in mil. Mil is 0.001 inch and the postions are referenced on the bottom left corner of the PCB. &lt;br /&gt;
The mounting holes are 3.0 mm and located at 3,3 mm, 3,47mm, 47,3mm and 47,47mm. The PCB is 50x50 mm.&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4980</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4980"/>
		<updated>2025-11-17T11:44:34Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* IO voltage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant.&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 425 mil. (you may want to know this if you are designing an addon board that requires both 5V and 3.3V.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4979</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4979"/>
		<updated>2025-11-17T11:34:34Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* I2C1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 500 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4978</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4978"/>
		<updated>2025-11-17T11:34:21Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* I2C2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4977</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4977"/>
		<updated>2025-11-17T11:33:52Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* I2C2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 300 mil.&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4976</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4976"/>
		<updated>2025-11-17T11:33:21Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* UART */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1475, Y 100 mil.&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4975</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4975"/>
		<updated>2025-11-17T11:32:37Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450, Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4974</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4974"/>
		<updated>2025-11-17T11:32:22Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SWD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450 Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 1850, Y 1025 mil.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4973</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4973"/>
		<updated>2025-11-17T11:31:38Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SV2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450 Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4972</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4972"/>
		<updated>2025-11-17T11:31:25Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SV3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450 Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 775, Y 1825 mil .&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4971</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4971"/>
		<updated>2025-11-17T11:30:51Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SV2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450 Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 125 Y 1100&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4970</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4970"/>
		<updated>2025-11-17T11:30:07Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site for the SPI functions of this connector. &lt;br /&gt;
It is connected to PB12-15. &lt;br /&gt;
&lt;br /&gt;
Position of this connector: X 450 Y 150 mil.&lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4969</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4969"/>
		<updated>2025-11-17T10:32:46Z</updated>

		<summary type="html">&lt;p&gt;Rew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== introduction ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard STM32 development board is an STM32F072 development board that is a bit more compact than the ST Nucleo boards. &lt;br /&gt;
&lt;br /&gt;
It differs from the Nucleo in that it does not try to break out EVERY pin of the chip, just a useful subset. Some pins that have I2C, SPI, or UART functionality are broken out on connectors specifically tailored for that use case. Many other GPIO pins are broken out on standard 2x10 headers. &lt;br /&gt;
&lt;br /&gt;
The board is available for purchase &amp;quot;on request&amp;quot;. It cannot compete with the ST Nucleo boards (on price). But if you want one shoot us an Email and we&amp;#039;ll sell you one (or more). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site. &lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4968</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4968"/>
		<updated>2025-10-09T14:08:16Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* QLC+ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
== DMX input on Linux ==&lt;br /&gt;
&lt;br /&gt;
The Unix-derived way of handling tty/uart makes it impossible to do DMX input from userspace. So this option has existed in the hardware for ages, but for Linux there was no software support for DMX input. &lt;br /&gt;
&lt;br /&gt;
I have recently  (september 2024) written a driver for the UART in userspace that will actually do DMX input and deliver the DMX universe as a memory mappable file. From there it is easy to export it say to OLA, and hopefully QLC+. &lt;br /&gt;
&lt;br /&gt;
This is a hardware driver, so it depends on the hardware. I&amp;#039;ve tested it on raspberry pi 3, and that works. I expect minor changes for other versions. It is not worth my trouble if nobody uses it, so if you need it, please let me know. I&amp;#039;ll then make sure it works on YOUR raspberry pi and write some more documentation.&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. .... link is dead :-( See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To simplify a few steps I recommend to just install ola from the distribution. &lt;br /&gt;
We won&amp;#039;t use the actual olad binary, but it arranges a few things that are useful. &lt;br /&gt;
&lt;br /&gt;
First this installs the scripts to have ola start at &lt;br /&gt;
system boot. Also this will add the olad user we need to run the daemon under. &lt;br /&gt;
We do this before compiling&lt;br /&gt;
and installing ola from source so that our freshly compiled ola will overwrite&lt;br /&gt;
the system binaries with a working one. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
If you haven&amp;#039;t already done so, edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 sudo nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third and last line. Then: &lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources:&lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ola deamon should run under user &amp;quot;olad&amp;quot;. Adding that is simple enough: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser --system olad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. (at least, &lt;br /&gt;
that&amp;#039;s what happened on mine :-) ) &lt;br /&gt;
&lt;br /&gt;
Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad (the one in the bullseye distribution) will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: The build in bullseye has defines and build flags that result in the baud-rate-setting &lt;br /&gt;
code thinking that the calls needed to set the baud rate are not available. In the latest&lt;br /&gt;
ola version the conditions that cause the code to think it isn&amp;#039;t available have changed a bit&lt;br /&gt;
and the &amp;quot;we can&amp;#039;t change the baud rate because at compile time the calls weren&amp;#039;t available&amp;quot; &lt;br /&gt;
code now prints an error message instead of just returning: &amp;quot;couldn&amp;#039;t change it for some reason&amp;quot;&lt;br /&gt;
resulting in the above &amp;quot;failed to set baud rate&amp;quot; message without further explanation. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. &lt;br /&gt;
(also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked. &lt;br /&gt;
This hopefully happens in a future debian/raspberry pi OS version).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4967</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4967"/>
		<updated>2024-09-10T18:47:35Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* DMX input on Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
== DMX input on Linux ==&lt;br /&gt;
&lt;br /&gt;
The Unix-derived way of handling tty/uart makes it impossible to do DMX input from userspace. So this option has existed in the hardware for ages, but for Linux there was no software support for DMX input. &lt;br /&gt;
&lt;br /&gt;
I have recently  (september 2024) written a driver for the UART in userspace that will actually do DMX input and deliver the DMX universe as a memory mappable file. From there it is easy to export it say to OLA, and hopefully QLC+. &lt;br /&gt;
&lt;br /&gt;
This is a hardware driver, so it depends on the hardware. I&amp;#039;ve tested it on raspberry pi 3, and that works. I expect minor changes for other versions. It is not worth my trouble if nobody uses it, so if you need it, please let me know. I&amp;#039;ll then make sure it works on YOUR raspberry pi and write some more documentation.&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To simplify a few steps I recommend to just install ola from the distribution. &lt;br /&gt;
We won&amp;#039;t use the actual olad binary, but it arranges a few things that are useful. &lt;br /&gt;
&lt;br /&gt;
First this installs the scripts to have ola start at &lt;br /&gt;
system boot. Also this will add the olad user we need to run the daemon under. &lt;br /&gt;
We do this before compiling&lt;br /&gt;
and installing ola from source so that our freshly compiled ola will overwrite&lt;br /&gt;
the system binaries with a working one. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
If you haven&amp;#039;t already done so, edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 sudo nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third and last line. Then: &lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources:&lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ola deamon should run under user &amp;quot;olad&amp;quot;. Adding that is simple enough: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser --system olad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. (at least, &lt;br /&gt;
that&amp;#039;s what happened on mine :-) ) &lt;br /&gt;
&lt;br /&gt;
Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad (the one in the bullseye distribution) will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: The build in bullseye has defines and build flags that result in the baud-rate-setting &lt;br /&gt;
code thinking that the calls needed to set the baud rate are not available. In the latest&lt;br /&gt;
ola version the conditions that cause the code to think it isn&amp;#039;t available have changed a bit&lt;br /&gt;
and the &amp;quot;we can&amp;#039;t change the baud rate because at compile time the calls weren&amp;#039;t available&amp;quot; &lt;br /&gt;
code now prints an error message instead of just returning: &amp;quot;couldn&amp;#039;t change it for some reason&amp;quot;&lt;br /&gt;
resulting in the above &amp;quot;failed to set baud rate&amp;quot; message without further explanation. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. &lt;br /&gt;
(also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked. &lt;br /&gt;
This hopefully happens in a future debian/raspberry pi OS version).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4966</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4966"/>
		<updated>2024-09-10T08:53:57Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
== DMX input on Linux ==&lt;br /&gt;
&lt;br /&gt;
The Unix-derived way of handling tty/uart makes it impossible to do DMX input from userspace. So this option has existed in the hardware for ages, but for Linux there was no software support. &lt;br /&gt;
&lt;br /&gt;
I have recently  (september 2024) written a driver for the UART in userspace that will actually do DMX input and deliver the DMX universe as a memory mappable file. From there it is easy to export it say to OLA, and hopefully QLC+. &lt;br /&gt;
&lt;br /&gt;
This is a hardware driver, so it depends on the hardware. I&amp;#039;ve tested it on raspberry pi 3, and that works. I expect minor changes for other versions. It is not worth my trouble if nobody uses it, so if you need it, please let me know. I&amp;#039;ll then make sure it works on YOUR raspberry pi and write some more documentation. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To simplify a few steps I recommend to just install ola from the distribution. &lt;br /&gt;
We won&amp;#039;t use the actual olad binary, but it arranges a few things that are useful. &lt;br /&gt;
&lt;br /&gt;
First this installs the scripts to have ola start at &lt;br /&gt;
system boot. Also this will add the olad user we need to run the daemon under. &lt;br /&gt;
We do this before compiling&lt;br /&gt;
and installing ola from source so that our freshly compiled ola will overwrite&lt;br /&gt;
the system binaries with a working one. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
If you haven&amp;#039;t already done so, edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 sudo nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third and last line. Then: &lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources:&lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ola deamon should run under user &amp;quot;olad&amp;quot;. Adding that is simple enough: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser --system olad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. (at least, &lt;br /&gt;
that&amp;#039;s what happened on mine :-) ) &lt;br /&gt;
&lt;br /&gt;
Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad (the one in the bullseye distribution) will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: The build in bullseye has defines and build flags that result in the baud-rate-setting &lt;br /&gt;
code thinking that the calls needed to set the baud rate are not available. In the latest&lt;br /&gt;
ola version the conditions that cause the code to think it isn&amp;#039;t available have changed a bit&lt;br /&gt;
and the &amp;quot;we can&amp;#039;t change the baud rate because at compile time the calls weren&amp;#039;t available&amp;quot; &lt;br /&gt;
code now prints an error message instead of just returning: &amp;quot;couldn&amp;#039;t change it for some reason&amp;quot;&lt;br /&gt;
resulting in the above &amp;quot;failed to set baud rate&amp;quot; message without further explanation. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. &lt;br /&gt;
(also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked. &lt;br /&gt;
This hopefully happens in a future debian/raspberry pi OS version).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4684</id>
		<title>Assembling the DMX case</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4684"/>
		<updated>2023-12-31T15:02:11Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Step 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Assembling the DMX case = &lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|600px|DMX case]]&lt;br /&gt;
&lt;br /&gt;
== Included ==&lt;br /&gt;
&lt;br /&gt;
Included screws and spacers&lt;br /&gt;
 7x M3X6 6+1 screw&lt;br /&gt;
 4x M2.5x10 screw&lt;br /&gt;
 4X M2.5X12MM (If we&amp;#039;re our of 12mm, we&amp;#039;ll send 16mm) &lt;br /&gt;
 M2.5x4MM spacer &lt;br /&gt;
 4X M2.5X20MM FF spacer &lt;br /&gt;
 4X M2.5X6MM  screw&lt;br /&gt;
&lt;br /&gt;
=== OLD: ===&lt;br /&gt;
We&amp;#039;ve switched from M3 sized screws that you have to force through the RPI to M2.5 as was&lt;br /&gt;
intended by the RPI people. &lt;br /&gt;
 10x m3x6&lt;br /&gt;
  4x m3x12&lt;br /&gt;
  4x m2.5x10&lt;br /&gt;
  4x m3x4mm spacer&lt;br /&gt;
  4x m3x20mm spacer&lt;br /&gt;
&lt;br /&gt;
== Step 1 ==&lt;br /&gt;
&lt;br /&gt;
 4x m2.5x6&lt;br /&gt;
 4x m2.5x12&lt;br /&gt;
 4x m2.5x4mm spacer&lt;br /&gt;
 4x m2.5x20mm spacer&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_1.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_2.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_3.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_4.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
== Step 2 ==&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_5.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_6.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_7.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
== Step 3 ==&lt;br /&gt;
&lt;br /&gt;
 6x m3x6&lt;br /&gt;
 4x m2.5x10&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_8.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_9.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_10.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_11.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_12.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_13.jpg‎|400px|DMX case - step 3]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4683</id>
		<title>Assembling the DMX case</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4683"/>
		<updated>2023-12-31T15:00:57Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Included */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Assembling the DMX case = &lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|600px|DMX case]]&lt;br /&gt;
&lt;br /&gt;
== Included ==&lt;br /&gt;
&lt;br /&gt;
Included screws and spacers&lt;br /&gt;
 7x M3X6 6+1 screw&lt;br /&gt;
 4x M2.5x10 screw&lt;br /&gt;
 4X M2.5X12MM (If we&amp;#039;re our of 12mm, we&amp;#039;ll send 16mm) &lt;br /&gt;
 M2.5x4MM spacer &lt;br /&gt;
 4X M2.5X20MM FF spacer &lt;br /&gt;
 4X M2.5X6MM  screw&lt;br /&gt;
&lt;br /&gt;
=== OLD: ===&lt;br /&gt;
We&amp;#039;ve switched from M3 sized screws that you have to force through the RPI to M2.5 as was&lt;br /&gt;
intended by the RPI people. &lt;br /&gt;
 10x m3x6&lt;br /&gt;
  4x m3x12&lt;br /&gt;
  4x m2.5x10&lt;br /&gt;
  4x m3x4mm spacer&lt;br /&gt;
  4x m3x20mm spacer&lt;br /&gt;
&lt;br /&gt;
== Step 1 ==&lt;br /&gt;
&lt;br /&gt;
 4x m3x6&lt;br /&gt;
 4x m3x12&lt;br /&gt;
 4x m3x4mm spacer&lt;br /&gt;
 4x m3x20mm spacer&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_1.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_2.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_3.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_4.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
== Step 2 ==&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_5.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_6.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_7.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
== Step 3 ==&lt;br /&gt;
&lt;br /&gt;
 6x m3x6&lt;br /&gt;
 4x m2.5x10&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_8.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_9.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_10.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_11.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_12.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_13.jpg‎|400px|DMX case - step 3]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4682</id>
		<title>Assembling the DMX case</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Assembling_the_DMX_case&amp;diff=4682"/>
		<updated>2023-12-31T14:59:41Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Included */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Assembling the DMX case = &lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|600px|DMX case]]&lt;br /&gt;
&lt;br /&gt;
== Included ==&lt;br /&gt;
 7x M3X6 6+1 screw&lt;br /&gt;
 4x M2.5x10 screw&lt;br /&gt;
 4X M2.5X12MM (If we&amp;#039;re our of 12mm, we&amp;#039;ll send 16mm) &lt;br /&gt;
 M2.5x4MM spacer &lt;br /&gt;
 4X M2.5X20MM FF spacer &lt;br /&gt;
 4X M2.5X6MM  screw&lt;br /&gt;
&lt;br /&gt;
=== OLD: ===&lt;br /&gt;
Included screws and spacers&lt;br /&gt;
 10x m3x6&lt;br /&gt;
  4x m3x12&lt;br /&gt;
  4x m2.5x10&lt;br /&gt;
  4x m3x4mm spacer&lt;br /&gt;
  4x m3x20mm spacer&lt;br /&gt;
&lt;br /&gt;
== Step 1 ==&lt;br /&gt;
&lt;br /&gt;
 4x m3x6&lt;br /&gt;
 4x m3x12&lt;br /&gt;
 4x m3x4mm spacer&lt;br /&gt;
 4x m3x20mm spacer&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_1.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_2.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_3.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_4.jpg‎|400px|DMX case - step 1]]&lt;br /&gt;
&lt;br /&gt;
== Step 2 ==&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_5.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_6.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_7.jpg‎|400px|DMX case - step 2]]&lt;br /&gt;
&lt;br /&gt;
== Step 3 ==&lt;br /&gt;
&lt;br /&gt;
 6x m3x6&lt;br /&gt;
 4x m2.5x10&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_8.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_9.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_10.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_11.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_12.jpg‎|400px|DMX case - step 3]]&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_13.jpg‎|400px|DMX case - step 3]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Bw_tool&amp;diff=4681</id>
		<title>Bw tool</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Bw_tool&amp;diff=4681"/>
		<updated>2023-12-05T09:50:39Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Basic Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Intro =&lt;br /&gt;
&lt;br /&gt;
The bw_tool is meant to provide a basic commandline access to the bitwizard expansion boards. It was written for the Raspberry Pi, but has now been proven to work on other Linux platforms with an spidev device as well. &lt;br /&gt;
&lt;br /&gt;
= Installation/Compiling =&lt;br /&gt;
&lt;br /&gt;
You can download the bw_tool [https://github.com/rewolff/bw_rpi_tools here]. If you are using git just type &lt;br /&gt;
 &amp;#039;&amp;#039;git clone https://github.com/rewolff/bw_rpi_tools.git&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Nowadays the &amp;quot;bw_tool&amp;quot; is the only directory of interest. Go there and build:&lt;br /&gt;
 &amp;#039;&amp;#039;cd bw_rpi_tools/bw_tool; make&amp;#039;&amp;#039; &lt;br /&gt;
should work fine. If things went smoothly (which they usually do) you can install the binary so that normal users on your rpi can find it: &lt;br /&gt;
  &amp;#039;&amp;#039;make install&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Setting up I2C/SPI under Linux ==&lt;br /&gt;
&lt;br /&gt;
The modern way is to do it with raspi-config. Enter raspi-config, select &amp;quot;interface options&amp;quot;, select I2C or SPI depending on what you need, and turn it on. After changing this just now, I did not need to reboot to make the setting active. &lt;br /&gt;
&lt;br /&gt;
Below is what raspi-config does behind the scenes, probably updated for later versions of the kernel and the raspberry pi. &lt;br /&gt;
&lt;br /&gt;
On Raspberry pi, raspbian, you first need to edit /boot/config.txt . Near the bottom you will find a line that reads: &lt;br /&gt;
 #dtparam=i2c_arm=on &lt;br /&gt;
You need to remove the hashmark so that it becomes: &lt;br /&gt;
 dtparam=i2c_arm=on&lt;br /&gt;
&lt;br /&gt;
To activate this a reboot is required. &lt;br /&gt;
&lt;br /&gt;
Then you need to make sure that the i2c-dev module is loaded. For testing, type: &lt;br /&gt;
 modprobe i2c-dev &lt;br /&gt;
but to make it permantently add &amp;quot;i2c-dev&amp;quot; to /etc/modules .&lt;br /&gt;
&lt;br /&gt;
= Basic Example =&lt;br /&gt;
&lt;br /&gt;
The simplest invocation:&lt;br /&gt;
&lt;br /&gt;
 bw_tool -t &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
will display the shown text on an SPI_LCD on the default SPI bus (SPI0). Options modify the defaults.&lt;br /&gt;
&lt;br /&gt;
For example, if you have an I2C module, add: &lt;br /&gt;
 -I -D /dev/i2c-1&lt;br /&gt;
to switch to i2c-mode and specify the correct device. &lt;br /&gt;
&lt;br /&gt;
If you have a rpi_ui plugged onto your raspberry pi, add:&lt;br /&gt;
 -a 94&lt;br /&gt;
&lt;br /&gt;
So the complete commandline would become: &lt;br /&gt;
 bw_tool -D /dev/i2c-1 -I -a 94 -t &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= About Permissions =&lt;br /&gt;
&lt;br /&gt;
The above command needs access to the SPI bus. By default Linux does not know if letting users access this bus is going to compromise the system or not. As a result, Linux chooses to only allow the root user access to the SPI or I2C bus  by default. So you have the following choices: &lt;br /&gt;
&lt;br /&gt;
* You can run your whole session as root. Run &amp;quot;sudo -i&amp;quot; to gain root access.&lt;br /&gt;
* You can issue only the commands that require spi-bus access as root by prefixing them with &amp;quot;sudo&amp;quot;. e.g.:&lt;br /&gt;
  sudo bw_tool -t &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
* If you are using I2C only, you could add yourself to the I2C group (assuming your username is &amp;quot;pi&amp;quot;) :&lt;br /&gt;
  sudo gpasswd -a pi i2c&lt;br /&gt;
or:&lt;br /&gt;
  sudo usermod -a -G i2c pi&lt;br /&gt;
You only need to run one of these commands once. Afterwards, log out and back in. To verify if the command succeeded, run:&lt;br /&gt;
  groups&lt;br /&gt;
it should return something like:&lt;br /&gt;
  pi adm dialout cdrom sudo audio video plugdev games users &amp;#039;&amp;#039;&amp;#039;i2c&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* you can change the permissions on the device files: &lt;br /&gt;
  sudo chmod 666 /dev/spidev*&lt;br /&gt;
  sudo chmod 666 /dev/i2c-*&lt;br /&gt;
&lt;br /&gt;
Since the &amp;quot;/dev&amp;quot; filesystem is kept in RAM, you will need to do that again, at every boot. You could add those commands to /etc/rc.local to issue them automatically at every boot, but a better way is to use [https://wiki.debian.org/udev| udev] for this. To do that create (as root) the file /etc/udev/rules.d/70-i2cspi.rules with the following contents:&lt;br /&gt;
 SUBSYSTEM==&amp;quot;spidev&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
 SUBSYSTEM==&amp;quot;i2c-dev&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
and reboot. All I2C and SPI devices should now be world writable.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
&lt;br /&gt;
== Options Specifying the Device ==&lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -I &lt;br /&gt;
will switch to I2C mode. &lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -D &amp;lt;device&amp;gt; &lt;br /&gt;
will use that device. Specify /dev/spidev0.1 for the second SPI bus on the raspberry pi for example. Or /dev/i2c-1 to specify the second I2C bus. On revision 2 Raspberry Pi&amp;#039;s, the I2C buses are switched, so you need -D /dev/i2c-1, while on the first raspberry pi&amp;#039;s -D /dev/i2c-0 is redundant as that is the default. &lt;br /&gt;
 &lt;br /&gt;
The option&lt;br /&gt;
 -a &amp;lt;address&amp;gt; &lt;br /&gt;
specifies the address of the device to use. Note that BitWizard uses the full 8 bits that are sent to the device. Add one for &amp;quot;read&amp;quot; operation. In some circles, notably I2C, it is customary to specify just those 7 bits. Thus when the I2C_LCD is at the default address of 0x82, i2cdetect will scan it at address 0x41.&lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -S&lt;br /&gt;
will scan the bus for bitwizard protocol devices. This only works for SPI devices. Use the i2cdetect command (in the package i2ctools) to scan the I2C bus if you have i2c devices.&lt;br /&gt;
&lt;br /&gt;
== Identifying the Device ==&lt;br /&gt;
To check for a proper connection to the device, one could use the identify command line switch -i. For instance, a Raspberry Pi UI connected via I2C could be checked with&lt;br /&gt;
 bw_tool  -I -D /dev/i2c-0 -a 94 -i&lt;br /&gt;
returnes &lt;br /&gt;
 I2C_rpi_ui 1.6&lt;br /&gt;
&lt;br /&gt;
== Sending Data ==&lt;br /&gt;
&lt;br /&gt;
the option &lt;br /&gt;
 -t &amp;quot;text&amp;quot; &lt;br /&gt;
will send the text to the device, at port zero. The port cannot be changed, but all BitWizard PCBs that have the option of displaying text have the text port at port zero. &lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -w &amp;lt;addr&amp;gt;:&amp;lt;byte&amp;gt; &lt;br /&gt;
will write the byte to the port at addr. For LCD-equipped boards for example -w 12:50 will set the contrast to 0x50. &lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -W &amp;lt;addr&amp;gt;:&amp;lt;data&amp;gt;:&amp;lt;type&amp;gt;&lt;br /&gt;
will write the data to the port at addr, using the datasize specified in &amp;quot;type&amp;quot;: b for byte, s for short (16 bits), i for integer (32 bits) and l for long (64 bits) . For example -W 81:1000:s will write the value 0x1000 to the numsamples port on an analog-equipped board.&lt;br /&gt;
&lt;br /&gt;
== Reading Data ==&lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -R &amp;lt;port&amp;gt;:&amp;lt;datasize&amp;gt;&lt;br /&gt;
reads the data at port from the device. Datasize can be &amp;#039;b&amp;#039; for byte (default), &amp;#039;s&amp;#039; for short (16 bits), or &amp;#039;i&amp;#039; for a 32-bit integer. &lt;br /&gt;
&lt;br /&gt;
== Finetuning ==&lt;br /&gt;
&lt;br /&gt;
To test sending data to SPI devices, there is the &lt;br /&gt;
  --hex [byte...]&lt;br /&gt;
option. This simply sends the bytes specified, and reports back what was received. Note that BitWizard boards will not send any data until they have been selected, so the first byte received will represent whatever static is found on the bus.&lt;br /&gt;
&lt;br /&gt;
= Known Bugs =&lt;br /&gt;
* The identify command returns two garbled characters when used in I2C mode&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Bw_tool&amp;diff=4680</id>
		<title>Bw tool</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Bw_tool&amp;diff=4680"/>
		<updated>2023-12-05T09:49:25Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Setting up I2C/SPI under Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Intro =&lt;br /&gt;
&lt;br /&gt;
The bw_tool is meant to provide a basic commandline access to the bitwizard expansion boards. It was written for the Raspberry Pi, but has now been proven to work on other Linux platforms with an spidev device as well. &lt;br /&gt;
&lt;br /&gt;
= Installation/Compiling =&lt;br /&gt;
&lt;br /&gt;
You can download the bw_tool [https://github.com/rewolff/bw_rpi_tools here]. If you are using git just type &lt;br /&gt;
 &amp;#039;&amp;#039;git clone https://github.com/rewolff/bw_rpi_tools.git&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Nowadays the &amp;quot;bw_tool&amp;quot; is the only directory of interest. Go there and build:&lt;br /&gt;
 &amp;#039;&amp;#039;cd bw_rpi_tools/bw_tool; make&amp;#039;&amp;#039; &lt;br /&gt;
should work fine. If things went smoothly (which they usually do) you can install the binary so that normal users on your rpi can find it: &lt;br /&gt;
  &amp;#039;&amp;#039;make install&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Setting up I2C/SPI under Linux ==&lt;br /&gt;
&lt;br /&gt;
The modern way is to do it with raspi-config. Enter raspi-config, select &amp;quot;interface options&amp;quot;, select I2C or SPI depending on what you need, and turn it on. After changing this just now, I did not need to reboot to make the setting active. &lt;br /&gt;
&lt;br /&gt;
Below is what raspi-config does behind the scenes, probably updated for later versions of the kernel and the raspberry pi. &lt;br /&gt;
&lt;br /&gt;
On Raspberry pi, raspbian, you first need to edit /boot/config.txt . Near the bottom you will find a line that reads: &lt;br /&gt;
 #dtparam=i2c_arm=on &lt;br /&gt;
You need to remove the hashmark so that it becomes: &lt;br /&gt;
 dtparam=i2c_arm=on&lt;br /&gt;
&lt;br /&gt;
To activate this a reboot is required. &lt;br /&gt;
&lt;br /&gt;
Then you need to make sure that the i2c-dev module is loaded. For testing, type: &lt;br /&gt;
 modprobe i2c-dev &lt;br /&gt;
but to make it permantently add &amp;quot;i2c-dev&amp;quot; to /etc/modules .&lt;br /&gt;
&lt;br /&gt;
= Basic Example =&lt;br /&gt;
&lt;br /&gt;
The simplest invocation:&lt;br /&gt;
&lt;br /&gt;
 bw_tool -t &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
will display the shown text on an SPI_LCD on the default SPI bus (SPI0). Options modify the defaults.&lt;br /&gt;
&lt;br /&gt;
For example, if you have an I2C module, add: &lt;br /&gt;
 -I -D /dev/i2c-1&lt;br /&gt;
to switch to i2c-mode and specify the correct device. &lt;br /&gt;
&lt;br /&gt;
If you have a rpi_ui plugged onto your raspberry pi, add:&lt;br /&gt;
 -a 94&lt;br /&gt;
&lt;br /&gt;
= About Permissions =&lt;br /&gt;
&lt;br /&gt;
The above command needs access to the SPI bus. By default Linux does not know if letting users access this bus is going to compromise the system or not. As a result, Linux chooses to only allow the root user access to the SPI or I2C bus  by default. So you have the following choices: &lt;br /&gt;
&lt;br /&gt;
* You can run your whole session as root. Run &amp;quot;sudo -i&amp;quot; to gain root access.&lt;br /&gt;
* You can issue only the commands that require spi-bus access as root by prefixing them with &amp;quot;sudo&amp;quot;. e.g.:&lt;br /&gt;
  sudo bw_tool -t &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
* If you are using I2C only, you could add yourself to the I2C group (assuming your username is &amp;quot;pi&amp;quot;) :&lt;br /&gt;
  sudo gpasswd -a pi i2c&lt;br /&gt;
or:&lt;br /&gt;
  sudo usermod -a -G i2c pi&lt;br /&gt;
You only need to run one of these commands once. Afterwards, log out and back in. To verify if the command succeeded, run:&lt;br /&gt;
  groups&lt;br /&gt;
it should return something like:&lt;br /&gt;
  pi adm dialout cdrom sudo audio video plugdev games users &amp;#039;&amp;#039;&amp;#039;i2c&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* you can change the permissions on the device files: &lt;br /&gt;
  sudo chmod 666 /dev/spidev*&lt;br /&gt;
  sudo chmod 666 /dev/i2c-*&lt;br /&gt;
&lt;br /&gt;
Since the &amp;quot;/dev&amp;quot; filesystem is kept in RAM, you will need to do that again, at every boot. You could add those commands to /etc/rc.local to issue them automatically at every boot, but a better way is to use [https://wiki.debian.org/udev| udev] for this. To do that create (as root) the file /etc/udev/rules.d/70-i2cspi.rules with the following contents:&lt;br /&gt;
 SUBSYSTEM==&amp;quot;spidev&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
 SUBSYSTEM==&amp;quot;i2c-dev&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
and reboot. All I2C and SPI devices should now be world writable.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
&lt;br /&gt;
== Options Specifying the Device ==&lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -I &lt;br /&gt;
will switch to I2C mode. &lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -D &amp;lt;device&amp;gt; &lt;br /&gt;
will use that device. Specify /dev/spidev0.1 for the second SPI bus on the raspberry pi for example. Or /dev/i2c-1 to specify the second I2C bus. On revision 2 Raspberry Pi&amp;#039;s, the I2C buses are switched, so you need -D /dev/i2c-1, while on the first raspberry pi&amp;#039;s -D /dev/i2c-0 is redundant as that is the default. &lt;br /&gt;
 &lt;br /&gt;
The option&lt;br /&gt;
 -a &amp;lt;address&amp;gt; &lt;br /&gt;
specifies the address of the device to use. Note that BitWizard uses the full 8 bits that are sent to the device. Add one for &amp;quot;read&amp;quot; operation. In some circles, notably I2C, it is customary to specify just those 7 bits. Thus when the I2C_LCD is at the default address of 0x82, i2cdetect will scan it at address 0x41.&lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -S&lt;br /&gt;
will scan the bus for bitwizard protocol devices. This only works for SPI devices. Use the i2cdetect command (in the package i2ctools) to scan the I2C bus if you have i2c devices.&lt;br /&gt;
&lt;br /&gt;
== Identifying the Device ==&lt;br /&gt;
To check for a proper connection to the device, one could use the identify command line switch -i. For instance, a Raspberry Pi UI connected via I2C could be checked with&lt;br /&gt;
 bw_tool  -I -D /dev/i2c-0 -a 94 -i&lt;br /&gt;
returnes &lt;br /&gt;
 I2C_rpi_ui 1.6&lt;br /&gt;
&lt;br /&gt;
== Sending Data ==&lt;br /&gt;
&lt;br /&gt;
the option &lt;br /&gt;
 -t &amp;quot;text&amp;quot; &lt;br /&gt;
will send the text to the device, at port zero. The port cannot be changed, but all BitWizard PCBs that have the option of displaying text have the text port at port zero. &lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -w &amp;lt;addr&amp;gt;:&amp;lt;byte&amp;gt; &lt;br /&gt;
will write the byte to the port at addr. For LCD-equipped boards for example -w 12:50 will set the contrast to 0x50. &lt;br /&gt;
&lt;br /&gt;
The option&lt;br /&gt;
 -W &amp;lt;addr&amp;gt;:&amp;lt;data&amp;gt;:&amp;lt;type&amp;gt;&lt;br /&gt;
will write the data to the port at addr, using the datasize specified in &amp;quot;type&amp;quot;: b for byte, s for short (16 bits), i for integer (32 bits) and l for long (64 bits) . For example -W 81:1000:s will write the value 0x1000 to the numsamples port on an analog-equipped board.&lt;br /&gt;
&lt;br /&gt;
== Reading Data ==&lt;br /&gt;
&lt;br /&gt;
The option &lt;br /&gt;
 -R &amp;lt;port&amp;gt;:&amp;lt;datasize&amp;gt;&lt;br /&gt;
reads the data at port from the device. Datasize can be &amp;#039;b&amp;#039; for byte (default), &amp;#039;s&amp;#039; for short (16 bits), or &amp;#039;i&amp;#039; for a 32-bit integer. &lt;br /&gt;
&lt;br /&gt;
== Finetuning ==&lt;br /&gt;
&lt;br /&gt;
To test sending data to SPI devices, there is the &lt;br /&gt;
  --hex [byte...]&lt;br /&gt;
option. This simply sends the bytes specified, and reports back what was received. Note that BitWizard boards will not send any data until they have been selected, so the first byte received will represent whatever static is found on the bus.&lt;br /&gt;
&lt;br /&gt;
= Known Bugs =&lt;br /&gt;
* The identify command returns two garbled characters when used in I2C mode&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=4679</id>
		<title>General I2C protocol</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=General_I2C_protocol&amp;diff=4679"/>
		<updated>2023-11-06T12:06:48Z</updated>

		<summary type="html">&lt;p&gt;Rew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
BitWizard expansion boards communicate using an I2C protocol. &lt;br /&gt;
&lt;br /&gt;
I2C is a standard protocol, sometimes called &amp;quot;TW&amp;quot; or &amp;quot;TWI&amp;quot; by other manufacturers. &lt;br /&gt;
Each I2C slave has its own I2C address. This allows us to daisy chain a large number of boards. The BitWizard I2C boards can be told to use a different I2C address so that you can resolve conflicts if you would otherwise have several devices at one address. Most other commercial products have an I2C address assigned by the manufacturer or a small range that you can configure using strapping pins. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the pinout of the bitwizard connector: [https://bitwizard.nl/wiki/I2C_connector_pinout look here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Timing =&lt;br /&gt;
&lt;br /&gt;
The slaves use an ATTINY44 processor. These have a hardware universal serial interface (USI) module that can be configured as &amp;quot;I2C slave&amp;quot;. Many things however have to be processed in software. This means that some time is required between each byte. The hardware of the ATTINY44 will pull the SCL line low while the processing is not finished. If you use a software I2C master, doublecheck that your I2C master supports this feature. &lt;br /&gt;
&lt;br /&gt;
The I2C protocol is specified at 100kHz and 400kHz bit rate. If you lower the pullup resistors a bit and have a short bus, the hardware will probably be able to handle bit rates up to 2MHz. This is not recommended. Use the standard 400kHz. &lt;br /&gt;
&lt;br /&gt;
= Protocol =&lt;br /&gt;
&lt;br /&gt;
To send a sequence of bytes to the slave I2C device, the master starts by creating a START condition: the SDA line goes low while SCL is held high. All slaves are now primed to receive an &amp;quot;address&amp;quot; byte. Next the master sends the address byte. &lt;br /&gt;
&lt;br /&gt;
After this the protocol in theory depends on which slave you are talking to. In practice so far it is convenient to make the slaves talk a similar protocol: the  next byte specifies a &amp;quot;register&amp;quot; or &amp;quot;port&amp;quot; address. After this you can send data to that port or register. &lt;br /&gt;
&lt;br /&gt;
If the data can be considered a &amp;quot;data stream&amp;quot; like with the I2C_LCD board, you can call it a &amp;quot;port&amp;quot;. If there is just a single value, it is more common to call it a register.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4678</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4678"/>
		<updated>2023-10-11T17:35:17Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* bullseye */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To simplify a few steps I recommend to just install ola from the distribution. &lt;br /&gt;
We won&amp;#039;t use the actual olad binary, but it arranges a few things that are useful. &lt;br /&gt;
&lt;br /&gt;
First this installs the scripts to have ola start at &lt;br /&gt;
system boot. Also this will add the olad user we need to run the daemon under. &lt;br /&gt;
We do this before compiling&lt;br /&gt;
and installing ola from source so that our freshly compiled ola will overwrite&lt;br /&gt;
the system binaries with a working one. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
If you haven&amp;#039;t already done so, edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 sudo nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third and last line. Then: &lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources:&lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ola deamon should run under user &amp;quot;olad&amp;quot;. Adding that is simple enough: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser --system olad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. (at least, &lt;br /&gt;
that&amp;#039;s what happened on mine :-) ) &lt;br /&gt;
&lt;br /&gt;
Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad (the one in the bullseye distribution) will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: The build in bullseye has defines and build flags that result in the baud-rate-setting &lt;br /&gt;
code thinking that the calls needed to set the baud rate are not available. In the latest&lt;br /&gt;
ola version the conditions that cause the code to think it isn&amp;#039;t available have changed a bit&lt;br /&gt;
and the &amp;quot;we can&amp;#039;t change the baud rate because at compile time the calls weren&amp;#039;t available&amp;quot; &lt;br /&gt;
code now prints an error message instead of just returning: &amp;quot;couldn&amp;#039;t change it for some reason&amp;quot;&lt;br /&gt;
resulting in the above &amp;quot;failed to set baud rate&amp;quot; message without further explanation. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. &lt;br /&gt;
(also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked. &lt;br /&gt;
This hopefully happens in a future debian/raspberry pi OS version).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4677</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4677"/>
		<updated>2023-10-11T15:00:17Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* bullseye */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
Edit /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 nano  /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
and remove the # before deb-src, which is probably the third line. Then: &lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources: &lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: I&amp;#039;ve compared the sources for the &amp;quot;working&amp;quot; distro-ola and the working-from-git and the only changes are documentation-related. Not a single line-of-code was changed between the two versions. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. (also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4676</id>
		<title>STM32 development board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=STM32_development_board&amp;diff=4676"/>
		<updated>2023-10-02T09:07:46Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* SV2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== pinout ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IO voltage ===&lt;br /&gt;
The &amp;quot;VCCIO&amp;quot; voltage can be set with the jumper &amp;quot;5V/3.3V&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that this is &amp;quot;power for the slave device&amp;quot;, it does not imply that the outgoing signals will have a 5V level (that&amp;#039;s always 3.3V), or that the pins are 5V tolerant. &lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PA10 RX&lt;br /&gt;
* PA9 TX&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== I2C1 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB7 SDA&lt;br /&gt;
* PB6 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I2C2 === &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* PB11 SDA&lt;br /&gt;
* PB10 SCL&lt;br /&gt;
* 4 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
See elsewhere on this site. &lt;br /&gt;
&lt;br /&gt;
=== SV2 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
(not all pin numbers are typed out fully). &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PA0&lt;br /&gt;
* PA1&lt;br /&gt;
* PA2&lt;br /&gt;
* PA3&lt;br /&gt;
* PA4 &lt;br /&gt;
* PA5&lt;br /&gt;
* PA6&lt;br /&gt;
* PA7&lt;br /&gt;
* PA8 &lt;br /&gt;
* PA15 &lt;br /&gt;
* PB0 &lt;br /&gt;
* PB1 &lt;br /&gt;
* PD2 &lt;br /&gt;
* PB5 &lt;br /&gt;
* PB8 &lt;br /&gt;
* PB9&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SV3 ===&lt;br /&gt;
&lt;br /&gt;
General purpose IO connector. &lt;br /&gt;
&lt;br /&gt;
* 1 GND&lt;br /&gt;
* 2 GND&lt;br /&gt;
* 3 PC0&lt;br /&gt;
* 4 PC1&lt;br /&gt;
* 5 PC2&lt;br /&gt;
* 6 PC3&lt;br /&gt;
* 7 PC4&lt;br /&gt;
* 8 PC5&lt;br /&gt;
* 9 PC6&lt;br /&gt;
* 10 PC7&lt;br /&gt;
* 11 PC8&lt;br /&gt;
* 12 PC9&lt;br /&gt;
* 13 PC10&lt;br /&gt;
* 14 PC11&lt;br /&gt;
* 15 PC12&lt;br /&gt;
* 16 PC13&lt;br /&gt;
* 17 PC14&lt;br /&gt;
* 18 PC15&lt;br /&gt;
* 19 VCCIO&lt;br /&gt;
* 20 VCCIO&lt;br /&gt;
&lt;br /&gt;
=== SWD  ===&lt;br /&gt;
&lt;br /&gt;
* 1 VCC 3.3V&lt;br /&gt;
* 2 SWCK PA14&lt;br /&gt;
* 3 GND&lt;br /&gt;
* 4 SWDAT PA13&lt;br /&gt;
* 5 NRST &lt;br /&gt;
* 6 BOOT0&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4675</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4675"/>
		<updated>2023-09-20T19:16:40Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* bullseye */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources: &lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
The build step will take about 20 minutes on a pi4 with a fast SD card. Next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: I&amp;#039;ve compared the sources for the &amp;quot;working&amp;quot; distro-ola and the working-from-git and the only changes are documentation-related. Not a single line-of-code was changed between the two versions. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. (also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked).&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4674</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4674"/>
		<updated>2023-09-20T19:09:41Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* OLA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
==== bullseye ====&lt;br /&gt;
&lt;br /&gt;
It seems that once again the stock OLA distribution has a problem with the uartdmx plugin. &lt;br /&gt;
&lt;br /&gt;
To compile ola from scratch from the github current version first install the dependencies:&lt;br /&gt;
&lt;br /&gt;
 sudo apt build-dep ola &lt;br /&gt;
&lt;br /&gt;
then get the sources: &lt;br /&gt;
&lt;br /&gt;
  git clone https://github.com/OpenLightingProject/ola.git&lt;br /&gt;
&lt;br /&gt;
Then configure, build and install:&lt;br /&gt;
  cd ola &lt;br /&gt;
  autoreconf -i&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make -j4 &lt;br /&gt;
  sudo make install &lt;br /&gt;
&lt;br /&gt;
next I had to add the olad user to the group tty to allow it to write to the device: &lt;br /&gt;
&lt;br /&gt;
  sudo adduser olad tty &lt;br /&gt;
&lt;br /&gt;
FYI: A non-working olad will report &lt;br /&gt;
  plugins/uartdmx/UartWidget.cpp:180: Failed to set baud rate to 250k&lt;br /&gt;
while a working one will report: &lt;br /&gt;
  plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD&lt;br /&gt;
&lt;br /&gt;
Also FYI: I&amp;#039;ve compared the sources for the &amp;quot;working&amp;quot; distro-ola and the working-from-git and the only changes are documentation-related. Not a single line-of-code was changed between the two versions. &lt;br /&gt;
&lt;br /&gt;
If I&amp;#039;ve missed a step when you try this, let me know. (also let me know if all this was not necessary on your system, and say your distribution&amp;#039;s ola worked). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4673</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4673"/>
		<updated>2023-09-20T18:49:21Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* output mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (there is an &amp;quot;exit 0&amp;quot; in there, so put it BEFORE that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi. However this now seems unmaintained and hard-to-get and possibly it doesn&amp;#039;t even work on modern pi&amp;#039;s. But if it works on your pi the following command allows you view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO 18 pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4672</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4672"/>
		<updated>2023-09-20T18:43:08Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* all raspberries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. In my tests today (2023) I had a different number on my screen when I was doing this. I used 3x more: 48000000. This works as well (on a rpi4). &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (IIRC there is an &amp;quot;exit 0&amp;quot; in there, so don&amp;#039;t put it AFTER that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi and use the following command to view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4671</id>
		<title>Dmx interface for raspberry pi</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Dmx_interface_for_raspberry_pi&amp;diff=4671"/>
		<updated>2023-09-20T18:41:15Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* raspberry pi 3 and pi 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
[[File:DMX_case_complete.jpg‎|thumb|DMX with case]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi &amp;#039;&amp;#039;&amp;#039;DMX interface for raspberry pi&amp;#039;&amp;#039;&amp;#039;] allows you to interface a raspberry pi with DMX hardware. &lt;br /&gt;
&lt;br /&gt;
There is also [http://www.bitwizard.nl/shop/DMX-interface-for-Raspberry-pi-with-usb-(FT245RL) a version &amp;quot;with FT245&amp;quot;]. That version adds the option to use your raspberry pi with our board as an Enttec USB Pro compatible device from another computer (raspberry pi or PC, Windows or Linux)&lt;br /&gt;
&lt;br /&gt;
If you select &amp;quot;for pi zero&amp;quot; we give you an extra 40 pin male header and do not solder the matching female header onto our board. You can then chose several configurations yourself. The one I prefer is to have the male headers on the zero on the bottom, and the female on our board on the top. Keep in mind that if you arrange for the pi to stick out from under or above our board, the pinout is going to be wrong. So you can&amp;#039;t put the connectors on both boards on top, and then flip one to make the connection.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
There are several software packages that can be used with your &amp;#039;&amp;#039;&amp;#039;DMX interface for Raspberry pi&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
First there are QLC+ and OLA. These are packages that run on Linux on the raspberry pi and allow you to control a DMX Universe. &lt;br /&gt;
&lt;br /&gt;
Second, there are several packages by Arjan van Vught that use the raspberry pi &amp;quot;bare metal&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
See: http://www.raspberrypi-dmx.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== QLC+ and OLA ==&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to remove the console and getty from the serial port that the DMX inteface is using. &lt;br /&gt;
&lt;br /&gt;
See: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QLC+ ===&lt;br /&gt;
&lt;br /&gt;
Harold van Hulten wrote a nice &amp;quot;howto&amp;quot;. See: http://www.udenix.nl/2016/how_did_i/rpi2dmx/&lt;br /&gt;
&lt;br /&gt;
QLC+ &amp;#039;s home is at: http://www.qlcplus.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== our tests ====&lt;br /&gt;
&lt;br /&gt;
To build qlc+ on raspberry pi with support for our board, you need to follow the howto at: &lt;br /&gt;
  https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5&lt;br /&gt;
but with one addition: &lt;br /&gt;
  apt-get install libqt5serialport5-dev&lt;br /&gt;
&lt;br /&gt;
needs to be added after installing the prerequisites. Next, it seems the uart device is disabled by default: edit &lt;br /&gt;
  plugins/plugins.pro &lt;br /&gt;
&lt;br /&gt;
to remove the hash on the line with &amp;quot;uart&amp;quot; so that it reads: &lt;br /&gt;
  !macx:!win32:SUBDIRS += uart&lt;br /&gt;
&lt;br /&gt;
Next, you can build and install. Also use raspi-config to disable console output on serial but to enable the hardware. One more thing is to add the disable-bt and uart_clock to config.txt. See elsewhere on this page for the precise instructions.&lt;br /&gt;
&lt;br /&gt;
=== OLA ===&lt;br /&gt;
&lt;br /&gt;
==== stretch ====&lt;br /&gt;
&lt;br /&gt;
The distribution ola works on Stretch. &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick.&lt;br /&gt;
&lt;br /&gt;
Don&amp;#039;t forget to disable login on the serial port (raspi-config) and to set init-uart-clock in /boot/config.txt. If you forget that last, you will notice that the &amp;quot;native-uart&amp;quot; option is not available when you try to add the universe. &lt;br /&gt;
&lt;br /&gt;
==== Jessie ====&lt;br /&gt;
On raspbian jessie installing OLA is easy: &amp;#039;&amp;#039;sudo apt-get install ola&amp;#039;&amp;#039; should do the trick. &amp;lt;s&amp;gt;The downside is however that it doesn&amp;#039;t work :-( . &amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;update:&amp;#039;&amp;#039;&amp;#039; The simple option seems to work now. :-) &amp;#039;&amp;#039;&amp;#039;update2:&amp;#039;&amp;#039;&amp;#039; Some hints are that it still doesn&amp;#039;t work. :-( &lt;br /&gt;
Some have reported success by following the howto at: http://www.raspberrypi-dmx.com/raspberry-pi-dmx512-rdm/ola-on-the-raspberry-pi (which boils down to installing ola 0.10.5 instead of 0.10.1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
what does work however is:&lt;br /&gt;
 #sudo apt-get install automake libtool bison flex libcppunit-dev libprotobuf-dev libprotoc-dev protobuf-compiler protobuf-c-compiler uuid-dev libmicrohttpd-dev&lt;br /&gt;
 sudo apt-get build-dep ola&lt;br /&gt;
 mkdir ola&lt;br /&gt;
 cd ola&lt;br /&gt;
 wget https://github.com/OpenLightingProject/ola/archive/0.10.1.tar.gz&lt;br /&gt;
 tar xvfz 0.10.1.tar.gz&lt;br /&gt;
 cd ola-0.10.1&lt;br /&gt;
 #libtoolize&lt;br /&gt;
 autoreconf -i&lt;br /&gt;
 ./configure &lt;br /&gt;
 make -j 5 all&lt;br /&gt;
 sudo make install&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt; &lt;br /&gt;
There is one little thing about the first two commands here. The first should always work, but if I accidentally missed a package, well.. I missed a package and the build will fail. The second one (with &amp;quot;build-dep&amp;quot; should be more reliable. But before that works, you need to add the sources to your /etc/apt/sources.list file. It&amp;#039;s already there, but commented out. Use your favorite editor to do that. (otherwise, try: sudo nano /etc/apt/sources.list )&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== wheezy ====&lt;br /&gt;
On Wheezy, adding &lt;br /&gt;
 deb   http://apt.openlighting.org/raspbian  wheezy main&lt;br /&gt;
to &amp;#039;&amp;#039;/etc/apt/sources.list&amp;#039;&amp;#039;, and then the &amp;#039;&amp;#039;apt-get install ola&amp;#039;&amp;#039; should work. &lt;br /&gt;
&lt;br /&gt;
There are some important hints at: http://opendmx.net/index.php/OLA_Device_Specific_Configuration#UART_native_DMX&lt;br /&gt;
&lt;br /&gt;
==== raspberry pi 3 and pi 4 ====&lt;br /&gt;
&lt;br /&gt;
You  need to disable bluetooth to free the &amp;quot;right&amp;quot; uart for use by DMX.&lt;br /&gt;
&lt;br /&gt;
You need to add in /boot/config.txt: &lt;br /&gt;
&lt;br /&gt;
 dtoverlay=disable-bt&lt;br /&gt;
&lt;br /&gt;
This has the consequence that we&amp;#039;ve stolen back the good UART from the bluetooth that&amp;#039;s present on the PI3 and PI4.&lt;br /&gt;
&lt;br /&gt;
For reference (in case you have an older installation), it used to be:  &lt;br /&gt;
 dtoverlay=pi3-disable-bt&lt;br /&gt;
&lt;br /&gt;
Otherwise, the wrong UART will be used. The &amp;quot;wrong&amp;quot; uart (=ttyS0) will be connected to the pins that the DMX interface uses. This uart will: &lt;br /&gt;
* change baudrate unexpectedly when the CPU feels hot. &lt;br /&gt;
* I haven&amp;#039;t figured out if it CAN do the required baud rate, and/or how to do that.&lt;br /&gt;
&lt;br /&gt;
On the raspberry pi forums there is talk about re-enabling bluetooth at a lower performance level, so that might be possible, however you&amp;#039;ll have to do your own research.&lt;br /&gt;
&lt;br /&gt;
==== all raspberries ====&lt;br /&gt;
&lt;br /&gt;
First you need to disable &amp;quot;other things&amp;quot; on the UART that the DMX board uses. &lt;br /&gt;
&lt;br /&gt;
 sudo systemctl disable serial-getty@ttyAMA0.service&lt;br /&gt;
&lt;br /&gt;
and remove &amp;quot;ttyAMA&amp;quot; or &amp;quot;serial0&amp;quot; from /boot/config.txt. (you&amp;#039;ll find something like &amp;#039;&amp;#039;&amp;#039;console=ttyAMA0,115200&amp;#039;&amp;#039;&amp;#039; there, remove that whole &amp;#039;&amp;#039;&amp;#039;console=&amp;#039;&amp;#039;&amp;#039; entry. Try not to mess up the rest of that line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most importantly: add: &lt;br /&gt;
 init_uart_clock=16000000&lt;br /&gt;
to your config.txt file in the /boot directory. &lt;br /&gt;
&lt;br /&gt;
Next, you need to configure ola to use the native-uart plugin. It should be as easy as clicking on &amp;quot;add universe&amp;quot; on the ola home page. Somehow we often do not see the plugin active. Sometimes clicking on reload plugins helps, other times we need to restart ola to get the plugin to show up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locate your ola-uartdmx.conf (on some systems I&amp;#039;m told it is in &amp;#039;&amp;#039;/etc/ola/conf/&amp;#039;&amp;#039;, on others &amp;#039;&amp;#039;/var/lib/ola/conf/&amp;#039;&amp;#039;, and in some cases: &amp;#039;&amp;#039;/root/.ola/ola-uartdmx.conf&amp;#039;&amp;#039; or &amp;#039;&amp;#039;/home/pi/.ola/ola-uartdmx.conf&amp;#039;&amp;#039;. One of the ways to find out is to look at the -c argument on your running olad.). Edit it and set enabled to true, set the correct device (ttyAMA0), and add &amp;#039;&amp;#039;/dev/ttyAMA0-break = 100&amp;#039;&amp;#039; and &amp;#039;&amp;#039;/dev/ttyAMA0-malf = 100&amp;#039;&amp;#039; . It should then look like:&lt;br /&gt;
&lt;br /&gt;
 /dev/ttyAMA0-break = 100&lt;br /&gt;
 /dev/ttyAMA0-malf = 24000&lt;br /&gt;
 device = /dev/ttyAMA0&lt;br /&gt;
 enabled = true&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;malf&amp;quot; (mark after last frame) is set to 24 miliseconds. This is due to a problem with OLA: it writes the data and after that waits for the time specified in &amp;quot;malf&amp;quot;. It turns out that the kernel will return from the write before the buffer is flushed. So the malf is measured from close to the START of the frame. Thus if you would enter the normal MALF of 100 microseconds, the next break is attempted after only about three characters have been sent. When the kernel then tries to empty the buffer before issuing the BREAK, it waits way too long. We (bitwizard + ola developers) have not been able to figure out an easy fix. So until then saying &amp;quot;24000&amp;quot; gives reasonable performance. (but once the bug has been fixed, you&amp;#039;ll need to adjust this configuration parameter)&lt;br /&gt;
&lt;br /&gt;
==== output mode ====&lt;br /&gt;
&lt;br /&gt;
Then set the board to output mode. I would recommend creating a small script (&amp;#039;&amp;#039;sudo nano /usr/bin/set_dmx_mode; sudo chmod 755 /usr/bin/set_dmx_mode&amp;#039;&amp;#039;) : &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # set_dmx_mode&lt;br /&gt;
 pin=18&lt;br /&gt;
 gpio=/sys/class/gpio/gpio$pin&lt;br /&gt;
 if [ $# -lt 1 ] ; then &lt;br /&gt;
   echo &amp;quot;$0 : on or off?&amp;quot;&lt;br /&gt;
   exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -d $gpio ] ; then &lt;br /&gt;
    echo $pin &amp;gt; /sys/class/gpio/export&lt;br /&gt;
 fi&lt;br /&gt;
 echo out &amp;gt; $gpio/direction&lt;br /&gt;
 echo $1 &amp;gt; $gpio/value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then calling the script: &lt;br /&gt;
 sudo /usr/bin/set_dmx_mode 1&lt;br /&gt;
&lt;br /&gt;
I recommend putting that line in /etc/rc.local so that it gets executed at boot time so you don&amp;#039;t have to worry about it. (IIRC there is an &amp;quot;exit 0&amp;quot; in there, so don&amp;#039;t put it AFTER that!)&lt;br /&gt;
&lt;br /&gt;
Or you can install the gpio utility from wiringpi and use the following command to view the status of all the pins&lt;br /&gt;
&lt;br /&gt;
 gpio readall&lt;br /&gt;
&lt;br /&gt;
and to set GPIO 18 (BCM) in output mode &lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 18 out&lt;br /&gt;
 gpio -g write 18 1&lt;br /&gt;
&lt;br /&gt;
also, pin 14 &amp;amp; 15 need to be in the ALT0 mode, if this is not the case use&lt;br /&gt;
&lt;br /&gt;
 gpio -g mode 14 alt0&lt;br /&gt;
 gpio -g mode 15 alt0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the earlier versions of the DMX board have a bug that when the GPIO pin is an input (not driven) it will configure the board as an output. This is not desirable. Newer versions (starting 1.4) will have this &amp;quot;fixed&amp;quot; and the &amp;quot;default&amp;quot; will be &amp;quot;DMX IN&amp;quot; mode. &lt;br /&gt;
&lt;br /&gt;
This does mean that if you want the board to do output, you can get away with forgetting about this gpio18 business if you have an older version. (I just realized &amp;#039;&amp;#039;I&amp;#039;&amp;#039; was getting away with this.... :-) )&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== used hardware pins ==&lt;br /&gt;
&lt;br /&gt;
The DMX harware uses the 3.3V, 5V, GND, RX, TX and GPIO18 signals. Besides that the non-FTDI version breaks out the SPI bus and I2C bus. &lt;br /&gt;
&lt;br /&gt;
== jumper settings ==&lt;br /&gt;
&lt;br /&gt;
The jumper block has three (sensible) jumper positions, they can be either on or off. &lt;br /&gt;
(We used to deliver the jumpers on the jumper block in say 1-NC, 3-NC, 4-NC: each of the jumpers on just one pin, not connected to another jumper pin. Nowadays we deliver them loose in the bag.)&lt;br /&gt;
&lt;br /&gt;
Officially the DMX wire is called a bus. Oficially a bus should be terminated at both ends. Most people think of the DMX bus as coming out of our board and then TO the lamps. So most often our board will be at one end of the bus. In that case you should terminate the bus on our board: Jumper 3-4 mounted. Termination at the SENDING side of the bus is less important than on the opposite end. So if you&amp;#039;re just sending DMX data with our board, the termination at our board is not that important. Most people don&amp;#039;t bother. &lt;br /&gt;
&lt;br /&gt;
Another possible configuration is that you have a few fixtures and then connect to the DMX IN connector on our board, and then another few fixtures on the DMX out. Our board will be in the middle of the bus, and you are then NOT supposed to add a terminator on our board: Do NOT place the 3-4 jumper. &lt;br /&gt;
&lt;br /&gt;
With &amp;quot;short&amp;quot; busses, the termination is less important than with longer busses. What is &amp;quot;short&amp;quot; and what is &amp;quot;long&amp;quot; depends on the dataspeed. For example, for &amp;quot;SATA&amp;quot; 30-50cm is normal, 1m would be long. For DMX a few tens of meters is still &amp;quot;short&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The other two jumper positions should be added and removed in tandem. They provide a pullup/pulldown on the DMX databus so that the signal level is defined even when there is noone driving the bus. This is important when you do RDM. I found documentation that specified pullup on one line and pulldown on the other, but also the other way around. If you have trouble with RDM, add the jumpers. If that doesn&amp;#039;t make things better, try using a few jumper wires and wire 1-5 and 2-6. If that works better for you, let us know! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
&lt;br /&gt;
There is a case for raspberry pi with DMX board. &lt;br /&gt;
&lt;br /&gt;
The assembly instructions have a few pictures. &lt;br /&gt;
&lt;br /&gt;
[[Assembling_the_DMX_case]]&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4670</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4670"/>
		<updated>2023-07-26T16:20:40Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
For (high speed) SPI and I2C, the FT2232H &amp;quot;works&amp;quot;, but is superceded by the newer FT4222H. You can buy the  [https://bitwizard.nl/shop/FT4222h-Breakout-Board BitWizard FT4222H breakout here].&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
* Consider pullups on the board for I2C operation.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1.0: initial testing version&lt;br /&gt;
* 1.1: public release.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4669</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4669"/>
		<updated>2023-07-26T16:15:49Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
* Consider pullups on the board for I2C operation.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1.0: initial testing version&lt;br /&gt;
* 1.1: public release.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4668</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4668"/>
		<updated>2023-07-26T16:15:22Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Changelog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
* Consider pullups on the board for I2C operation.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1.0: initial testing version&lt;br /&gt;
* 1.1: public release.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4667</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4667"/>
		<updated>2023-07-26T16:15:11Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Future hardware enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
* Consider pullups on the board for I2C operation.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.0: initial testing version&lt;br /&gt;
1.1: public release.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4666</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4666"/>
		<updated>2023-07-26T16:14:40Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Changelog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.0: initial testing version&lt;br /&gt;
1.1: public release.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4665</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4665"/>
		<updated>2023-07-26T16:13:33Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Jumper settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
J5: selection of IO voltage provided on the connectors: &lt;br /&gt;
* 1-2 3.3V&lt;br /&gt;
* 2-3 5V.&lt;br /&gt;
&lt;br /&gt;
I2CB-EN and I2CA-EN: &lt;br /&gt;
&lt;br /&gt;
To enable I2C (and disable SPI) add a jumper.&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
* Renamed SV2 to J1&lt;br /&gt;
* Renamed SV3 to J2&lt;br /&gt;
* Jumper settings marked on PCB&lt;br /&gt;
* Moved center of mounting holes to 3mm from PCB edge&lt;br /&gt;
&lt;br /&gt;
2.0&lt;br /&gt;
* Initial public release&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4664</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4664"/>
		<updated>2023-07-26T16:09:38Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
For the SPI connector pinout please see: [[SPI_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
for the I2C connector pinout please see: [[I2C_connector_pinout]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The general purpose connector J1 is: &lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VCC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* pwr is connected tot the 3.3V of the board. &lt;br /&gt;
If the led doesn&amp;#039;t light when you expect it to be, then there is something seriously wrong. (or you need to plug it in).&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
==== For 2.0 ====&lt;br /&gt;
&lt;br /&gt;
SV2: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see SV3 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SV3: Regulator power source selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== For 2.1 ====&lt;br /&gt;
&lt;br /&gt;
J1: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see J2 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J2: Regulator power source selection (physical position is the same as in 2.0, only numbering has changed)&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
* Renamed SV2 to J1&lt;br /&gt;
* Renamed SV3 to J2&lt;br /&gt;
* Jumper settings marked on PCB&lt;br /&gt;
* Moved center of mounting holes to 3mm from PCB edge&lt;br /&gt;
&lt;br /&gt;
2.0&lt;br /&gt;
* Initial public release&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4663</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4663"/>
		<updated>2023-07-26T16:03:22Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector. Besides that there are two jumpers for enabling the I2C ports, and a selector jumper that allows you to chose between 3.3V or 5V on the IO connectors.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
The SV1 connector is designed to be connected to the 40 pin expansion connector of Terasic FPGA boards. This can be done with a standard 40 pin IDE cable, provided that it isn&amp;#039;t too long. &lt;br /&gt;
&lt;br /&gt;
40-pin connector SV1 is connected as follows:&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;5V&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;21&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;23&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;24&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;28&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;29&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;30&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;32&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;33&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;34&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;35&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;36&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;37&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;38&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;39&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connectors SV4 and SV5 are designed to be compatible with the 20-pin IO connectors also found on other BitWizard boards. &lt;br /&gt;
&lt;br /&gt;
20-pin connector SV4 is connected as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
20-pin connector SV5 is connected as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* led1 is connected to VCC&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
==== For 2.0 ====&lt;br /&gt;
&lt;br /&gt;
SV2: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see SV3 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SV3: Regulator power source selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== For 2.1 ====&lt;br /&gt;
&lt;br /&gt;
J1: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see J2 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J2: Regulator power source selection (physical position is the same as in 2.0, only numbering has changed)&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
* Renamed SV2 to J1&lt;br /&gt;
* Renamed SV3 to J2&lt;br /&gt;
* Jumper settings marked on PCB&lt;br /&gt;
* Moved center of mounting holes to 3mm from PCB edge&lt;br /&gt;
&lt;br /&gt;
2.0&lt;br /&gt;
* Initial public release&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4662</id>
		<title>FT2232H breakout board</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=FT2232H_breakout_board&amp;diff=4662"/>
		<updated>2023-07-26T16:02:11Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FT2232H breakout board =&lt;br /&gt;
&lt;br /&gt;
This is the documentation page for the FT2232H breakout board. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The FT2232H breakout board has an USB connector, two 6 pin SPI connectors, two 4 pin I2C connectors and a general purpose connector.&lt;br /&gt;
&lt;br /&gt;
== External resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf Datasheet]&lt;br /&gt;
* [http://www.ftdichip.com/Products/ICs/FT2232H.htm FTDI product page]&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
The SV1 connector is designed to be connected to the 40 pin expansion connector of Terasic FPGA boards. This can be done with a standard 40 pin IDE cable, provided that it isn&amp;#039;t too long. &lt;br /&gt;
&lt;br /&gt;
40-pin connector SV1 is connected as follows:&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;5V&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;21&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;23&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;24&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;28&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;29&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;30&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;31&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;32&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;33&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;34&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;35&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;36&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;37&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;38&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;39&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;40&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connectors SV4 and SV5 are designed to be compatible with the 20-pin IO connectors also found on other BitWizard boards. &lt;br /&gt;
&lt;br /&gt;
20-pin connector SV4 is connected as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ADBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ADBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ACBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ACBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
20-pin connector SV5 is connected as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;GND&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BDBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BDBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BCBUS6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;BCBUS7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3V3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
=== LEDS ===&lt;br /&gt;
&lt;br /&gt;
* led1 is connected to VCC&lt;br /&gt;
&lt;br /&gt;
== Jumper settings ==&lt;br /&gt;
&lt;br /&gt;
==== For 2.0 ====&lt;br /&gt;
&lt;br /&gt;
SV2: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see SV3 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SV3: Regulator power source selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== For 2.1 ====&lt;br /&gt;
&lt;br /&gt;
J1: 3V3 supply selection&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Direct from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: From regulator (see J2 settings)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J2: Regulator power source selection (physical position is the same as in 2.0, only numbering has changed)&amp;lt;br&amp;gt;&lt;br /&gt;
1-2: Powered from FPGA board (through 40-pin connector)&amp;lt;br&amp;gt;&lt;br /&gt;
2-3: Powered from USB&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Future hardware enhancements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
2.1&lt;br /&gt;
* Renamed SV2 to J1&lt;br /&gt;
* Renamed SV3 to J2&lt;br /&gt;
* Jumper settings marked on PCB&lt;br /&gt;
* Moved center of mounting holes to 3mm from PCB edge&lt;br /&gt;
&lt;br /&gt;
2.0&lt;br /&gt;
* Initial public release&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Bridgetimer&amp;diff=4661</id>
		<title>Bridgetimer</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Bridgetimer&amp;diff=4661"/>
		<updated>2023-01-14T15:53:46Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* Technical details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bridgetimer =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
A bridge tournament consists of a number of rounds and short breaks in between rounds to allow the players to switch tables. The Bridgetimer counts down the time remaining for each round as well as the remaining break time and provides several audiosignals:&lt;br /&gt;
&lt;br /&gt;
* The starting signal of a round, doubling as the ending signal of the break time&lt;br /&gt;
* A warning signal indicating the round is about to end&lt;br /&gt;
* The ending signal of a round, doubling as the starting signal of the break time&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The BitWizard Bridgetimer has several distinctive features:&lt;br /&gt;
&lt;br /&gt;
* Large display&lt;br /&gt;
* Visible difference between &amp;quot;remaining round-time&amp;quot; and &amp;quot;remaining break time&amp;quot;.&lt;br /&gt;
* Different sounds signals for &amp;quot;end-of-round&amp;quot;, &amp;quot;Warning, end-of-round is nearing&amp;quot; and &amp;quot;Start of  round&amp;quot;. &lt;br /&gt;
* Five preset programs. Allowing you to quickly change between different settings (e.g. for the beginners-evening where the rounds are longer). &lt;br /&gt;
* Easy to use interface for adjustments.&lt;br /&gt;
* On-the-fly adjustment of the playing and changeover (break) time.&lt;br /&gt;
* Mounting holes on the back enabling you to mount the timer on a wall&lt;br /&gt;
&lt;br /&gt;
[[File:Bridgeklok_EN.png|600 px|]]&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
Within the box you will find:&lt;br /&gt;
&lt;br /&gt;
* The Bridgetimer&lt;br /&gt;
* A 15V adapter&lt;br /&gt;
* An extension cord&lt;br /&gt;
&lt;br /&gt;
Use the Bridgetimer exclusively with the supplied adapter.&lt;br /&gt;
If necessary a similar adapter can be used, with the + on the center pin. The voltage should be between 12 and 15V, however no guarantees are made regarding the brightness of the screen when not using the supplied adapter.&lt;br /&gt;
&lt;br /&gt;
== Using the Bridgetimer ==&lt;br /&gt;
&lt;br /&gt;
The Bridgetimer is simple to use. Just plug it in with the supplied adapter, turn it on and it starts running the first program called &amp;quot;P1&amp;quot; at 10 seconds left of &amp;quot;change time&amp;quot;. These ten seconds give you time to adjust the break time or to press the &amp;#039;&amp;#039;&amp;#039;pause&amp;#039;&amp;#039;&amp;#039; button (5) to pause the clock before the first round timer starts. &lt;br /&gt;
&lt;br /&gt;
The timer always starts with program P1 selected. The default settings for all programs are 30 minutes of playing time, a warning signal when 5 minutes of playing time remain and 3 minutes of break time.&lt;br /&gt;
&lt;br /&gt;
A different program may be selected by pressing &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039; (2) and subsequently either &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; (3) or &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; (4) in order to select the desired program.&lt;br /&gt;
&lt;br /&gt;
The Bridgetimer may be paused at any time by pressing the &amp;#039;&amp;#039;&amp;#039;pause&amp;#039;&amp;#039;&amp;#039; button (5).&lt;br /&gt;
&lt;br /&gt;
If the current break or round time needs to be adjusted at any point this can done by pressing &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; (3) or &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; (4) to respectively increase or decrease the time by 1 minute.&lt;br /&gt;
&lt;br /&gt;
A warning signal sounds when the end of a round approaches, a different signal sounds at the end of a round, and a third signal sounds when the break time is over and the next round begins.&lt;br /&gt;
&lt;br /&gt;
During break time the leftmost digit of the display will show a single moving segment symbolizing the players walking around. This way the difference between break and playing time can easily be distinguished.&lt;br /&gt;
&lt;br /&gt;
== Creating custom programs ==&lt;br /&gt;
&lt;br /&gt;
To adjust the clock press &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039;. Now &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; will select the preset-program. The programs show as P1 through P5. Press &amp;#039;&amp;#039;&amp;#039;pause&amp;#039;&amp;#039;&amp;#039; to start the selected program, or press &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039; again to make adjustments to the selected program. &lt;br /&gt;
&lt;br /&gt;
For each program there are three settings: time to play, warning time, and changeover (break) time. Each is adjusted with the &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; keys. The changeover time is adjusted with 20 second increments. The other two with 1 minute increments. &lt;br /&gt;
&lt;br /&gt;
Pressing &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039; will move to the next option. Any changes are automatically saved.&lt;br /&gt;
&lt;br /&gt;
Unused programs start out at the default of 30 minutes playing, 5 minute warning and 3 minute changeover time.&lt;br /&gt;
&lt;br /&gt;
To adjust the brightness of the numbers, turn off the clock, press and hold the &amp;#039;&amp;#039;&amp;#039;pause&amp;#039;&amp;#039;&amp;#039; button, and turn the clock on. The display should now show an &amp;quot;I&amp;quot; (from Intensity) as well as the current value. You may adjust (using the &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; buttons) from 0 to 99. The default of 33 seems good for normal use. During daytime or outside even brighter might be useful. Each &amp;#039;&amp;#039;&amp;#039;up&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;down&amp;#039;&amp;#039;&amp;#039; keypress adjusts the intensity value by 3 units. The lowest intensities will show a visible flicker in the display. Don&amp;#039;t use those.&lt;br /&gt;
&lt;br /&gt;
== Suggestions for use ==&lt;br /&gt;
&lt;br /&gt;
When you turn on the clock it will always start back at P1. The reason is that when for example there are two weekly events that require different settings, starting back up on the old settings guarantees that you will &amp;#039;&amp;#039;always&amp;#039;&amp;#039; start with the wrong settings active. Starting back at P1 all the time means we stand a chance of getting it right some of the time.... &lt;br /&gt;
&lt;br /&gt;
If the program that your club uses is always the same, just adjust the default P1 program. You can do this once and then adjust the change time before the first round or the first round itself on each event. &lt;br /&gt;
&lt;br /&gt;
If you share the clock between two events that have different timings, I recommend programming the schedules for those events into P2 and P3. People who are not familiar with the clock will quickly adjust P1 to whatever event is then being played. If you know what you&amp;#039;re doing you can even quicker just select the proper program. In my experience P1 gets messed up &amp;quot;by the other players&amp;quot; all the time.&lt;br /&gt;
&lt;br /&gt;
== Changing the volume ==&lt;br /&gt;
&lt;br /&gt;
The volume can be adjusted with the use of a small screwdriver, both flat and cross head screwdrivers may be used. On the back of the Bridgetimer a total of 4 holes can be found, the two uppermost are used to mount the Bridgetimer on a wall, the outermost is used for field upgrades of the firmware. The innermost (closest to the speaker) is used for adjusting the volume.&lt;br /&gt;
As the circuit board and the potentiometer are positioned relatively deep within the timer, some effort may be required to locate the potentiometer. In order to prevent short-circuiting it is advised to search for the potentiometer only when the the timer is unpowered.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
BitWizard is a small company headed by a bridge-playing CEO. When his bridgeclub wanted a new clock we build one.&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re not specializing in &amp;quot;bridge products&amp;quot; and we don&amp;#039;t have the money to fund a big requirements interview among a large number of clubs. So we build what WE need and what we think you will find useful. If you feel something could be improved, feel free to let us know, we&amp;#039;ll take it into consideration! It is entirely possible that due to a different way of playing a drive, your club has different requirements. We might even be able to help you with the hardware you&amp;#039;ve already bought in the form of software changes.&lt;br /&gt;
&lt;br /&gt;
As mentioned above, we welcome feature requests. No guarantees can be made that we implement all of them, but we love to hear them. &lt;br /&gt;
&lt;br /&gt;
Features that have already been requested and are currently being implemented are: &lt;br /&gt;
* Multiple clocks in master-slave configuration&lt;br /&gt;
* Remote control&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if you think a device with four big numbers like this is useful in another context, be sure to let us know.&lt;br /&gt;
It is entirely possible the hardware is already capable of performing the task and as specified earlier, the installed software can be switched out for something you require. So if you have an idea, let us know.&lt;br /&gt;
&lt;br /&gt;
Feedback may be send to us by e-mail to info@BitWizard.nl .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
(the geeks may want to read this, the others can safely ignore it). &lt;br /&gt;
&lt;br /&gt;
The initial version of the clock used to run on 15V, but at one point we realized that 12V also worked with the latest components (led segments: The original required 12V for them alone, more modern ones only about 8). &lt;br /&gt;
&lt;br /&gt;
The USB port on the bottom can be used for upgrading the firmware.&lt;br /&gt;
&lt;br /&gt;
The two PCBs inside are identical, only one is populated as the master, the other as the slave. (The slave can sometimes be another, older (or newer) model than the master, this will not affect performance). Future versions might have only one PCB (for ease of assembly) (starting later in 2023 or maybe 2024). &lt;br /&gt;
&lt;br /&gt;
Version 1 of the hardware runs on an at90USB162 processor and has TLC59025 constant current led drivers to drive the segments. The segments are not multiplexed. Version 2 of the hardware has an STM32F072 processor (As of May 2017 Version 2 is still under development). As of 2023 version 3 is under development using an RP2040. As of january 2023 there is exactly one of those (i.e. half of two).&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4660</id>
		<title>Pwm16</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4660"/>
		<updated>2022-03-10T12:01:11Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PWM16 ==&lt;br /&gt;
&lt;br /&gt;
The board comes in two variants, the -b suffix has bigger FETs. &lt;br /&gt;
&lt;br /&gt;
=== specifications ===&lt;br /&gt;
&lt;br /&gt;
* PCA9685 PWM chip. &lt;br /&gt;
* Each channel drives a N-channel mosfet. &lt;br /&gt;
** Note when switching a load with an N-channel mosfet, the load is wired with its positive directly &lt;br /&gt;
connected to power and the mosfet will switch the negative terminal of your load. &lt;br /&gt;
* For ease of hooking up, each channel has a power and a switched connection. &lt;br /&gt;
&lt;br /&gt;
The small fets can handle 1A each. Running a total of 16A through the whole board will heat it up a bit, but should still work. Slightly more than 1A is permissible, provided it doesn&amp;#039;t last too long. But keep in mind that electronics works on a different timescale. &amp;quot;a second&amp;quot; Is already a very long time for such a small component. &lt;br /&gt;
&lt;br /&gt;
The big fets can handle 5A each. But running 80A through the whole board is going to heat it up beyond permissible limits. Again a bit more for a short period can be permitted, but timescale of &amp;quot;a few milli seconds&amp;quot; and not &amp;quot;a few seconds&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== pinout === &lt;br /&gt;
&lt;br /&gt;
Bottom edge has outputs 1-8, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Top edge has outputs 9-16, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
The right edge of the PCB has 6 connections: GND, V1, V1, GND, V2, V2. The power connections are separate. This alows you to run one side of the PCB at a different voltage than the other side. Say 5V on V2 for the top edge of the board, and 12V for the bottom edge. There are two Vx connectors to make it easy to connect one powersupply by looping a sort wire from the second V1 to V2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The i2c connector pinout is documented here: https://www.bitwizard.nl/wiki/I2C_connector_pinout&lt;br /&gt;
(note that the pin1 (and marking) is closest to the PCA chip). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The J1 jumper block allows you to configure the address of the PCA chip. No jumper is 0, a jumper is 1. A0 is the position closest to the PCA chip, A3 is the furthest.&lt;br /&gt;
&lt;br /&gt;
If your board has a second i2c connector, you can use it to chain multiple boards on one I2C bus. Make sure you configure each board for a different address in that case.&lt;br /&gt;
&lt;br /&gt;
=== Usage === &lt;br /&gt;
&lt;br /&gt;
For full documentation see the PCA9685 datasheet. &lt;br /&gt;
&lt;br /&gt;
To initialize:&lt;br /&gt;
* set register 0xfe to 5&lt;br /&gt;
* set register 0 to 0x20. &lt;br /&gt;
&lt;br /&gt;
Now the chip is initialized and will do about 1500Hz PWM&lt;br /&gt;
&lt;br /&gt;
To set a channel, write 4 bytes to an address 6+ 4*&amp;lt;channel number&amp;gt; . The first two bytes are the turn-on-timestamp. Write 0x00 0x00.  The second two are the turn-off-time. So values 0...0x0fff will set the PWM value (low byte first!). The highest value now will still have the output &amp;quot;off&amp;quot; for 1/4096 period. To turn the output fully on, you need to set the &amp;quot;always on&amp;quot; bit, which is in the &amp;quot;turn on&amp;quot; register that we&amp;#039;ve been setting to zero. So to turn it fully on send 0x00 0x10 0x00 0x00. &lt;br /&gt;
&lt;br /&gt;
OPTIONAL: if you don&amp;#039;t understand this, ignore it. &lt;br /&gt;
&lt;br /&gt;
There are different ways to configure the chip. For example, if you want to set five channels to 0x203, 0x405, 0x607, 0x809 and 0xa0b, the above recommendation works, but it loads your powersupply a bit weird. I&amp;#039;ve chosen the PWM values a bit wonky so that you can see where the differnt parts go: So above would send &amp;#039;&amp;#039;&amp;#039;00 00 03 02, 00 00 05 04, 00 00 07 06, 00 00 09 08, 00 00 0b 0a&amp;#039;&amp;#039;&amp;#039; (if the channels are consecutive you can send all that in one go!). In this configuration all five loads are loading the powersupply from 000 to 0203 in each PWM period. And none are loading the powersupply from 0a0b to 0fff. &lt;br /&gt;
&lt;br /&gt;
But slightly easier on the power supply would be: &amp;#039;&amp;#039;&amp;#039;00 00 03 02&amp;#039;&amp;#039;&amp;#039;: First channel is on from 000 to 0203. Then &amp;#039;&amp;#039;&amp;#039;03 02 08 06&amp;#039;&amp;#039;&amp;#039;: second channel is on from 0203 to 0608. Then &amp;#039;&amp;#039;&amp;#039;08 06 0f 0c&amp;#039;&amp;#039;&amp;#039;: third channel on from 0608 to 0c0f. Then &amp;#039;&amp;#039;&amp;#039;0f 0c 18 04&amp;#039;&amp;#039;&amp;#039;: the fourth channel wraps around: it is on from 0c0f to 0418! Continue with &amp;#039;&amp;#039;&amp;#039;18 04 23 0e&amp;#039;&amp;#039;&amp;#039; and now from 000 to 0e23 two loads are loading the powersupply and from 0e23 to 0fff only one: The variation in load on the powersupply is much less. This strategy works very good when the loads are all identical. When the loads are not identical the calculations become more complex.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4659</id>
		<title>Pwm16</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4659"/>
		<updated>2022-03-10T11:41:02Z</updated>

		<summary type="html">&lt;p&gt;Rew: /* pinout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PWM16 ==&lt;br /&gt;
&lt;br /&gt;
The board comes in two variants, the -b suffix has bigger FETs. &lt;br /&gt;
&lt;br /&gt;
=== specifications ===&lt;br /&gt;
&lt;br /&gt;
* PCA9685 PWM chip. &lt;br /&gt;
* Each channel drives a N-channel mosfet. &lt;br /&gt;
** Note when switching a load with an N-channel mosfet, the load is wired with its positive directly &lt;br /&gt;
connected to power and the mosfet will switch the negative terminal of your load. &lt;br /&gt;
* For ease of hooking up, each channel has a power and a switched connection. &lt;br /&gt;
&lt;br /&gt;
The small fets can handle 1A each. Running a total of 16A through the whole board will heat it up a bit, but should still work. Slightly more than 1A is permissible, provided it doesn&amp;#039;t last too long. But keep in mind that electronics works on a different timescale. &amp;quot;a second&amp;quot; Is already a very long time for such a small component. &lt;br /&gt;
&lt;br /&gt;
The big fets can handle 5A each. But running 80A through the whole board is going to heat it up beyond permissible limits. Again a bit more for a short period can be permitted, but timescale of &amp;quot;a few milli seconds&amp;quot; and not &amp;quot;a few seconds&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== pinout === &lt;br /&gt;
&lt;br /&gt;
Bottom edge has outputs 1-8, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Top edge has outputs 9-16, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
The right edge of the PCB has 6 connections: GND, V1, V1, GND, V2, V2. The power connections are separate. This alows you to run one side of the PCB at a different voltage than the other side. Say 5V on V2 for the top edge of the board, and 12V for the bottom edge. There are two Vx connectors to make it easy to connect one powersupply by looping a sort wire from the second V1 to V2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The i2c connector pinout is documented here: https://www.bitwizard.nl/wiki/I2C_connector_pinout&lt;br /&gt;
(note that the pin1 (and marking) is closest to the PCA chip). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The J1 jumper block allows you to configure the address of the PCA chip. No jumper is 0, a jumper is 1. A0 is the position closest to the PCA chip, A3 is the furthest.&lt;br /&gt;
&lt;br /&gt;
=== Usage === &lt;br /&gt;
&lt;br /&gt;
For full documentation see the PCA9685 datasheet. &lt;br /&gt;
&lt;br /&gt;
To initialize:&lt;br /&gt;
* set register 0xfe to 5&lt;br /&gt;
* set register 0 to 0x20. &lt;br /&gt;
&lt;br /&gt;
Now the chip is initialized and will do about 1500Hz PWM&lt;br /&gt;
&lt;br /&gt;
To set a channel, write 4 bytes to an address 6+ 4*&amp;lt;channel number&amp;gt; . The first two bytes are the turn-on-timestamp. Write 0x00 0x00.  The second two are the turn-off-time. So values 0...0x0fff will set the PWM value (low byte first!). The highest value now will still have the output &amp;quot;off&amp;quot; for 1/4096 period. To turn the output fully on, you need to set the &amp;quot;always on&amp;quot; bit, which is in the &amp;quot;turn on&amp;quot; register that we&amp;#039;ve been setting to zero. So to turn it fully on send 0x00 0x10 0x00 0x00. &lt;br /&gt;
&lt;br /&gt;
OPTIONAL: if you don&amp;#039;t understand this, ignore it. &lt;br /&gt;
&lt;br /&gt;
There are different ways to configure the chip. For example, if you want to set five channels to 0x203, 0x405, 0x607, 0x809 and 0xa0b, the above recommendation works, but it loads your powersupply a bit weird. I&amp;#039;ve chosen the PWM values a bit wonky so that you can see where the differnt parts go: So above would send &amp;#039;&amp;#039;&amp;#039;00 00 03 02, 00 00 05 04, 00 00 07 06, 00 00 09 08, 00 00 0b 0a&amp;#039;&amp;#039;&amp;#039; (if the channels are consecutive you can send all that in one go!). In this configuration all five loads are loading the powersupply from 000 to 0203 in each PWM period. And none are loading the powersupply from 0a0b to 0fff. &lt;br /&gt;
&lt;br /&gt;
But slightly easier on the power supply would be: &amp;#039;&amp;#039;&amp;#039;00 00 03 02&amp;#039;&amp;#039;&amp;#039;: First channel is on from 000 to 0203. Then &amp;#039;&amp;#039;&amp;#039;03 02 08 06&amp;#039;&amp;#039;&amp;#039;: second channel is on from 0203 to 0608. Then &amp;#039;&amp;#039;&amp;#039;08 06 0f 0c&amp;#039;&amp;#039;&amp;#039;: third channel on from 0608 to 0c0f. Then &amp;#039;&amp;#039;&amp;#039;0f 0c 18 04&amp;#039;&amp;#039;&amp;#039;: the fourth channel wraps around: it is on from 0c0f to 0418! Continue with &amp;#039;&amp;#039;&amp;#039;18 04 23 0e&amp;#039;&amp;#039;&amp;#039; and now from 000 to 0e23 two loads are loading the powersupply and from 0e23 to 0fff only one: The variation in load on the powersupply is much less. This strategy works very good when the loads are all identical. When the loads are not identical the calculations become more complex.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4658</id>
		<title>Pwm16</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=Pwm16&amp;diff=4658"/>
		<updated>2022-03-10T10:21:18Z</updated>

		<summary type="html">&lt;p&gt;Rew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PWM16 ==&lt;br /&gt;
&lt;br /&gt;
The board comes in two variants, the -b suffix has bigger FETs. &lt;br /&gt;
&lt;br /&gt;
=== specifications ===&lt;br /&gt;
&lt;br /&gt;
* PCA9685 PWM chip. &lt;br /&gt;
* Each channel drives a N-channel mosfet. &lt;br /&gt;
** Note when switching a load with an N-channel mosfet, the load is wired with its positive directly &lt;br /&gt;
connected to power and the mosfet will switch the negative terminal of your load. &lt;br /&gt;
* For ease of hooking up, each channel has a power and a switched connection. &lt;br /&gt;
&lt;br /&gt;
The small fets can handle 1A each. Running a total of 16A through the whole board will heat it up a bit, but should still work. Slightly more than 1A is permissible, provided it doesn&amp;#039;t last too long. But keep in mind that electronics works on a different timescale. &amp;quot;a second&amp;quot; Is already a very long time for such a small component. &lt;br /&gt;
&lt;br /&gt;
The big fets can handle 5A each. But running 80A through the whole board is going to heat it up beyond permissible limits. Again a bit more for a short period can be permitted, but timescale of &amp;quot;a few milli seconds&amp;quot; and not &amp;quot;a few seconds&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== pinout === &lt;br /&gt;
&lt;br /&gt;
Bottom edge has outputs 1-8, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Top edge has outputs 9-16, each with a &amp;lt;output&amp;gt; &amp;lt;V+&amp;gt; . Each is marked as such on the back of the PCB, as the front was full with components. &lt;br /&gt;
&lt;br /&gt;
The right edge of the PCB has 6 connections: GND, V1, V1, GND, V2, V2. The power connections are separate. This alows you to run one side of the PCB at a different voltage than the other side. Say 5V on V2 for the top edge of the board, and 12V for the bottom edge. There are two Vx connectors to make it easy to connect one powersupply by looping a sort wire from the second V1 to V2. &lt;br /&gt;
&lt;br /&gt;
=== Usage === &lt;br /&gt;
&lt;br /&gt;
For full documentation see the PCA9685 datasheet. &lt;br /&gt;
&lt;br /&gt;
To initialize:&lt;br /&gt;
* set register 0xfe to 5&lt;br /&gt;
* set register 0 to 0x20. &lt;br /&gt;
&lt;br /&gt;
Now the chip is initialized and will do about 1500Hz PWM&lt;br /&gt;
&lt;br /&gt;
To set a channel, write 4 bytes to an address 6+ 4*&amp;lt;channel number&amp;gt; . The first two bytes are the turn-on-timestamp. Write 0x00 0x00.  The second two are the turn-off-time. So values 0...0x0fff will set the PWM value (low byte first!). The highest value now will still have the output &amp;quot;off&amp;quot; for 1/4096 period. To turn the output fully on, you need to set the &amp;quot;always on&amp;quot; bit, which is in the &amp;quot;turn on&amp;quot; register that we&amp;#039;ve been setting to zero. So to turn it fully on send 0x00 0x10 0x00 0x00. &lt;br /&gt;
&lt;br /&gt;
OPTIONAL: if you don&amp;#039;t understand this, ignore it. &lt;br /&gt;
&lt;br /&gt;
There are different ways to configure the chip. For example, if you want to set five channels to 0x203, 0x405, 0x607, 0x809 and 0xa0b, the above recommendation works, but it loads your powersupply a bit weird. I&amp;#039;ve chosen the PWM values a bit wonky so that you can see where the differnt parts go: So above would send &amp;#039;&amp;#039;&amp;#039;00 00 03 02, 00 00 05 04, 00 00 07 06, 00 00 09 08, 00 00 0b 0a&amp;#039;&amp;#039;&amp;#039; (if the channels are consecutive you can send all that in one go!). In this configuration all five loads are loading the powersupply from 000 to 0203 in each PWM period. And none are loading the powersupply from 0a0b to 0fff. &lt;br /&gt;
&lt;br /&gt;
But slightly easier on the power supply would be: &amp;#039;&amp;#039;&amp;#039;00 00 03 02&amp;#039;&amp;#039;&amp;#039;: First channel is on from 000 to 0203. Then &amp;#039;&amp;#039;&amp;#039;03 02 08 06&amp;#039;&amp;#039;&amp;#039;: second channel is on from 0203 to 0608. Then &amp;#039;&amp;#039;&amp;#039;08 06 0f 0c&amp;#039;&amp;#039;&amp;#039;: third channel on from 0608 to 0c0f. Then &amp;#039;&amp;#039;&amp;#039;0f 0c 18 04&amp;#039;&amp;#039;&amp;#039;: the fourth channel wraps around: it is on from 0c0f to 0418! Continue with &amp;#039;&amp;#039;&amp;#039;18 04 23 0e&amp;#039;&amp;#039;&amp;#039; and now from 000 to 0e23 two loads are loading the powersupply and from 0e23 to 0fff only one: The variation in load on the powersupply is much less. This strategy works very good when the loads are all identical. When the loads are not identical the calculations become more complex.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
</feed>