<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.heepy.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Morris</id>
	<title>HeepyWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.heepy.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Morris"/>
	<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php/Special:Contributions/Morris"/>
	<updated>2026-04-20T17:37:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://www.heepy.net/index.php?title=MediaWiki:Robots.txt&amp;diff=1431</id>
		<title>MediaWiki:Robots.txt</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=MediaWiki:Robots.txt&amp;diff=1431"/>
		<updated>2019-07-26T17:22:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;User-Agent: MJ12bot Crawl-Delay: 5&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;User-Agent: MJ12bot&lt;br /&gt;
Crawl-Delay: 5&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=HeepyWiki:Robots.txt&amp;diff=1430</id>
		<title>HeepyWiki:Robots.txt</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=HeepyWiki:Robots.txt&amp;diff=1430"/>
		<updated>2019-07-26T17:18:01Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;does this work?&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;does this work?&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=MediaWiki:Sidebar&amp;diff=1429</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=MediaWiki:Sidebar&amp;diff=1429"/>
		<updated>2019-07-23T23:08:49Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1428</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1428"/>
		<updated>2019-07-23T21:46:59Z</updated>

		<summary type="html">&lt;p&gt;Morris: update description.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* packet sequence number&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
Sensor units receive a confirmation packet in response to data packets as part of the nrf24 protocol, and this confirmation packet can be preloaded on the receiver end to contain custom data. The telemetry units check for their unit ID in this response packet and will respond to a small subset of configuration commands in it; for instance this allows changing the reporting interval without needing physical access to the unit.&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|302.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA*s/cycle * 2880 cycles/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Worst case - maximum retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Read &amp;amp; transmit&lt;br /&gt;
|259 mS @ avg 2.6mA&lt;br /&gt;
|673 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29741 mS at 6.5 uA&lt;br /&gt;
|190 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|863 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec/cycle * 2880 cycles/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;br /&gt;
&lt;br /&gt;
== Schematic and Layout ==&lt;br /&gt;
[[File:board.png|450px]]&lt;br /&gt;
[[File:schematic.png|450px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1425</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1425"/>
		<updated>2018-11-19T23:19:29Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* packet sequence number&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|302.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA*s/cycle * 2880 cycles/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Worst case - maximum retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Read &amp;amp; transmit&lt;br /&gt;
|259 mS @ avg 2.6mA&lt;br /&gt;
|673 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29741 mS at 6.5 uA&lt;br /&gt;
|190 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|863 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec/cycle * 2880 cycles/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;br /&gt;
&lt;br /&gt;
== Schematic and Layout ==&lt;br /&gt;
[[File:board.png|450px]]&lt;br /&gt;
[[File:schematic.png|450px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1424</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1424"/>
		<updated>2018-11-19T23:17:13Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Schematic and Layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|302.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA*s/cycle * 2880 cycles/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Worst case - maximum retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Read &amp;amp; transmit&lt;br /&gt;
|259 mS @ avg 2.6mA&lt;br /&gt;
|673 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29741 mS at 6.5 uA&lt;br /&gt;
|190 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|863 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec/cycle * 2880 cycles/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;br /&gt;
&lt;br /&gt;
== Schematic and Layout ==&lt;br /&gt;
[[File:board.png|450px]]&lt;br /&gt;
[[File:schematic.png|450px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Schematic.png&amp;diff=1423</id>
		<title>File:Schematic.png</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Schematic.png&amp;diff=1423"/>
		<updated>2018-11-19T23:15:19Z</updated>

		<summary type="html">&lt;p&gt;Morris: kicad schematic image for environmental sensor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;kicad schematic image for environmental sensor&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Board.png&amp;diff=1422</id>
		<title>File:Board.png</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Board.png&amp;diff=1422"/>
		<updated>2018-11-19T23:14:10Z</updated>

		<summary type="html">&lt;p&gt;Morris: PC board layout image of environmental sensor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PC board layout image of environmental sensor&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1421</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1421"/>
		<updated>2018-11-19T23:13:16Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|302.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA*s/cycle * 2880 cycles/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Worst case - maximum retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Read &amp;amp; transmit&lt;br /&gt;
|259 mS @ avg 2.6mA&lt;br /&gt;
|673 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29741 mS at 6.5 uA&lt;br /&gt;
|190 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|863 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec/cycle * 2880 cycles/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;br /&gt;
&lt;br /&gt;
== Schematic and Layout ==&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1420</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1420"/>
		<updated>2018-11-19T23:09:02Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Energy Consumption */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|302.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA*s/cycle * 2880 cycles/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Worst case - maximum retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Read &amp;amp; transmit&lt;br /&gt;
|259 mS @ avg 2.6mA&lt;br /&gt;
|673 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29741 mS at 6.5 uA&lt;br /&gt;
|190 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|863 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec/cycle * 2880 cycles/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1419</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1419"/>
		<updated>2018-11-19T23:03:51Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Energy Consumption */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. Sleep current has a temperature component as well as a varying with battery voltage and can range from 4.5 to 6.5 uA under normal conditions.&lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Sleep&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total 302.6 uA * 2880 sec/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
Worst case - every packet requires maximum retry count (e.g., due to no receiver present, or heavy RFI)&lt;br /&gt;
* 259 mS at avg 2.6mA = 673 uA*sec&lt;br /&gt;
* 29741 mS at 6.5 uA = 190 uA*sec&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec * 2880 sec/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1418</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1418"/>
		<updated>2018-11-19T23:00:16Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Design ==&lt;br /&gt;
This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
== Energy Consumption ==&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. &lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Best case - no retransmits&lt;br /&gt;
|-&lt;br /&gt;
|Readings&lt;br /&gt;
|66 mS at 1.1mA&lt;br /&gt;
|72.6 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Transmit&lt;br /&gt;
|1 mS at 20mA&lt;br /&gt;
|20 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|LED flash&lt;br /&gt;
|10ms @ 1.5mA&lt;br /&gt;
|15 uA*sec&lt;br /&gt;
|-&lt;br /&gt;
|Total&lt;br /&gt;
|29923mS @ 6.5 uA&lt;br /&gt;
|195 uA*sec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Total: 302.6 uA * 2880 sec/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
Worst case - every packet requires maximum retry count (e.g., due to no receiver present, or heavy RFI)&lt;br /&gt;
* 259 mS at avg 2.6mA = 673 uA*sec&lt;br /&gt;
* 29741 mS at 6.5 uA = 190 uA*sec&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec * 2880 sec/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1417</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1417"/>
		<updated>2018-11-19T22:52:16Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;br /&gt;
&lt;br /&gt;
Measured energy consumption in actual use suggests long battery lifetimes such that there is essentially no need to provide for external charging, eg via solar or other scavenging. &lt;br /&gt;
&lt;br /&gt;
Best case - packet received and acknowledged on first try. &lt;br /&gt;
* 66 mS at 1.1mA = 72.6 uA*sec&lt;br /&gt;
* 1 mS at 20mA = 20 uA*sec&lt;br /&gt;
* 10ms @ 1.5mA = 15 uA*sec&lt;br /&gt;
29923mS @ 6.5 uA = 195 uA*sec&lt;br /&gt;
&lt;br /&gt;
Total: 302.6 uA * 2880 sec/day = 0.242 mAH/day&lt;br /&gt;
&lt;br /&gt;
On a 2600 mAH AA-size primary lithium thionyl chloride cell, this suggests a runtime approaching 30 years, though of course in reality lifespan will be limited by the physical degradation of the battery and other components. &lt;br /&gt;
&lt;br /&gt;
Worst case - every packet requires maximum retry count (e.g., due to no receiver present, or heavy RFI)&lt;br /&gt;
* 259 mS at avg 2.6mA = 673 uA*sec&lt;br /&gt;
* 29741 mS at 6.5 uA = 190 uA*sec&lt;br /&gt;
&lt;br /&gt;
Total: 863 uA*sec * 2880 sec/day = 0.690 mAH/day, or about 10 years on a 2600 mAH AA-size primary lithium thionyl chloride cell.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1416</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1416"/>
		<updated>2018-11-19T22:37:29Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;br /&gt;
&lt;br /&gt;
Telemetry includes: &lt;br /&gt;
&lt;br /&gt;
* Battery voltage&lt;br /&gt;
* Temperature&lt;br /&gt;
* Relative Humidity&lt;br /&gt;
* Barometric Pressure&lt;br /&gt;
* Number of retransmits needed for previous transmission to be acknowledged&lt;br /&gt;
&lt;br /&gt;
There is a configuration utility that can be flashed before installing the operating code which allows configuration of:&lt;br /&gt;
&lt;br /&gt;
* battery measurement voltage divider coefficient&lt;br /&gt;
* unique unit identifier string&lt;br /&gt;
* telemetry transmission interval&lt;br /&gt;
* radio target address and channel number&lt;br /&gt;
* radio retry limit and interval&lt;br /&gt;
* radio link mode (nrf24 bandwidth)&lt;br /&gt;
&lt;br /&gt;
The goal of the sensor board design was reliability and long-term unattended operation. In standard configuration metrics are sent around every 30 seconds, and when sleeping between readings it draws single-digit microamps. Energy consumption is dominated by the radio's current draw while transmitting, so to some degree it depends on the local RF environment and how often retransmits are necessary, but this can be offset by limiting the maximum retry count or using a different nrf24 bandwidth mode.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1415</id>
		<title>Environmental sensor</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Environmental_sensor&amp;diff=1415"/>
		<updated>2018-11-19T22:22:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit p...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a small, lower power environment sensor based on Bosch's BME280 sensor, STM32L062 MCU, and Nordic NRF24L01+ short-range 2.4GHz radio. Multiple sensor boards transmit periodic readings to a local relay unit which packages received metrics and forwards them via TCP/IP to a data collection system via Wifi. The radio-to-internet relay is based on the ESP32 platform and uses both a NRF24L01+ radio and the ESP32's onboard Wifi.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Main_Page&amp;diff=1414</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Main_Page&amp;diff=1414"/>
		<updated>2018-11-19T21:27:25Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Projects==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[networked AC current monitor]]&lt;br /&gt;
*[[current sensing components]]&lt;br /&gt;
*[[solar power instrumentation]]&lt;br /&gt;
*[[tube amplifier]]&lt;br /&gt;
*[[an accelerometer on a motorcycle]]&lt;br /&gt;
*[[remote sensor transmitter/receiver]]&lt;br /&gt;
*[[hard drive power usage]]&lt;br /&gt;
*[[PC board manufacturers]]&lt;br /&gt;
*[[optocouplers for teletype current loop]]&lt;br /&gt;
*[[RTTY demodulator using NJM2211]]&lt;br /&gt;
*[[Keying IC-7000 fsk from tty loop]]&lt;br /&gt;
*[[using Atmel's ATSHA204 sha256 chip]]&lt;br /&gt;
*[[USB-teletype]]&lt;br /&gt;
*[[environmental sensor]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[XBee radios]]&lt;br /&gt;
*[[SD cards on ARM/LPC]]&lt;br /&gt;
*[[NOTE regarding JTAG on Philips LPC]]&lt;br /&gt;
*[[Weird UART data rates]]&lt;br /&gt;
*[[PIC24 clock setup]]&lt;br /&gt;
*[[ST7565 LCD notes]]&lt;br /&gt;
*[[RN/WiFly 802.11 modules]]&lt;br /&gt;
*[[Sensirion humidity &amp;amp; temperature sensors]]&lt;br /&gt;
*[[i2c in userspace on linux (eg, raspberry pi)]]&lt;br /&gt;
*[[data storage capacity of teletype paper tape]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arcane incantations==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[mounting a partitioned image in linux]]&lt;br /&gt;
*[[ethernet bridge filtering]]&lt;br /&gt;
*[[KVM virtual machines in ubuntu]]&lt;br /&gt;
*[[recursive wget]]&lt;br /&gt;
*[[compiz settings by commandline]]&lt;br /&gt;
*[[installing grub bootblocks]]&lt;br /&gt;
*[[email alerts in ZoneMinder]]&lt;br /&gt;
*[[booting a floppy image on a flash drive]]&lt;br /&gt;
*[[turn off dpkg interactions]]&lt;br /&gt;
*[[debian / windows 7 dual boot]]&lt;br /&gt;
*[[Netgear GS108T and vlans]]&lt;br /&gt;
*[[installing fonts in debian]]&lt;br /&gt;
*[[debian on ~2012 Asus EeePC 1025C]]&lt;br /&gt;
*[[prevent windows from toggling usb serial control lines]]&lt;br /&gt;
*[[keepass with webdav on ubuntu]]&lt;br /&gt;
*[[diy SSL CA + android]]&lt;br /&gt;
*[[forcibly remove a stuck dm mapping]]&lt;br /&gt;
*[[fix weird tab situations for python in emacs]]&lt;br /&gt;
*[[rescan sata disk]]&lt;br /&gt;
*[[make raid set rebuild on spare]]&lt;br /&gt;
*[[make firefox stop trying to force https for a site]]&lt;br /&gt;
*[[find what device a luks volume is on]]&lt;br /&gt;
*[[make carddav work with roundcube 1.2]]&lt;br /&gt;
*[[disable charging LED with tasker on Galaxy S7]]&lt;br /&gt;
*[[change pulseaudio device settings]]&lt;br /&gt;
*[[shrink a PDF with gs]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other random stuff==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[cbr-929 mileage]]&lt;br /&gt;
*[[Teletype M28 keys]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[Special:AllPages]]&lt;br /&gt;
*[[:Category:Electronics]]&lt;br /&gt;
*[[:Category:Incantations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;!--        TODAY'S FEATURED PICTURE        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-tfp&amp;quot; style=&amp;quot;margin:4px 0 0 0; width:100%; background:none;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;&amp;quot;|&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; background:#faf5ff; color:#000; width:100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2  id=&amp;quot;mp-tfp-h2&amp;quot; style=&amp;quot;margin:3px; background:#ddcef2; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding:0.2em 0.4em&amp;quot;&amp;gt;Today's featured picture&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding: 2px&amp;quot; | [[File:Example.jpg]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Shrink_a_PDF_with_gs&amp;diff=1413</id>
		<title>Shrink a PDF with gs</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Shrink_a_PDF_with_gs&amp;diff=1413"/>
		<updated>2018-05-14T18:36:42Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;&amp;lt;pre&amp;gt; gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH  -dQUIET -sOutputFile=output_document.pdf input_document.pdf  &amp;lt;/pre&amp;gt;  I assume PDFS...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH  -dQUIET -sOutputFile=output_document.pdf input_document.pdf &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I assume PDFSETTINGS can be adjusted but no clue how to find out what the options for that are.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Main_Page&amp;diff=1412</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Main_Page&amp;diff=1412"/>
		<updated>2018-05-14T18:35:19Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Arcane incantations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Projects==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[networked AC current monitor]]&lt;br /&gt;
*[[current sensing components]]&lt;br /&gt;
*[[solar power instrumentation]]&lt;br /&gt;
*[[tube amplifier]]&lt;br /&gt;
*[[an accelerometer on a motorcycle]]&lt;br /&gt;
*[[remote sensor transmitter/receiver]]&lt;br /&gt;
*[[hard drive power usage]]&lt;br /&gt;
*[[PC board manufacturers]]&lt;br /&gt;
*[[optocouplers for teletype current loop]]&lt;br /&gt;
*[[RTTY demodulator using NJM2211]]&lt;br /&gt;
*[[Keying IC-7000 fsk from tty loop]]&lt;br /&gt;
*[[using Atmel's ATSHA204 sha256 chip]]&lt;br /&gt;
*[[USB-teletype]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[XBee radios]]&lt;br /&gt;
*[[SD cards on ARM/LPC]]&lt;br /&gt;
*[[NOTE regarding JTAG on Philips LPC]]&lt;br /&gt;
*[[Weird UART data rates]]&lt;br /&gt;
*[[PIC24 clock setup]]&lt;br /&gt;
*[[ST7565 LCD notes]]&lt;br /&gt;
*[[RN/WiFly 802.11 modules]]&lt;br /&gt;
*[[Sensirion humidity &amp;amp; temperature sensors]]&lt;br /&gt;
*[[i2c in userspace on linux (eg, raspberry pi)]]&lt;br /&gt;
*[[data storage capacity of teletype paper tape]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arcane incantations==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[mounting a partitioned image in linux]]&lt;br /&gt;
*[[ethernet bridge filtering]]&lt;br /&gt;
*[[KVM virtual machines in ubuntu]]&lt;br /&gt;
*[[recursive wget]]&lt;br /&gt;
*[[compiz settings by commandline]]&lt;br /&gt;
*[[installing grub bootblocks]]&lt;br /&gt;
*[[email alerts in ZoneMinder]]&lt;br /&gt;
*[[booting a floppy image on a flash drive]]&lt;br /&gt;
*[[turn off dpkg interactions]]&lt;br /&gt;
*[[debian / windows 7 dual boot]]&lt;br /&gt;
*[[Netgear GS108T and vlans]]&lt;br /&gt;
*[[installing fonts in debian]]&lt;br /&gt;
*[[debian on ~2012 Asus EeePC 1025C]]&lt;br /&gt;
*[[prevent windows from toggling usb serial control lines]]&lt;br /&gt;
*[[keepass with webdav on ubuntu]]&lt;br /&gt;
*[[diy SSL CA + android]]&lt;br /&gt;
*[[forcibly remove a stuck dm mapping]]&lt;br /&gt;
*[[fix weird tab situations for python in emacs]]&lt;br /&gt;
*[[rescan sata disk]]&lt;br /&gt;
*[[make raid set rebuild on spare]]&lt;br /&gt;
*[[make firefox stop trying to force https for a site]]&lt;br /&gt;
*[[find what device a luks volume is on]]&lt;br /&gt;
*[[make carddav work with roundcube 1.2]]&lt;br /&gt;
*[[disable charging LED with tasker on Galaxy S7]]&lt;br /&gt;
*[[change pulseaudio device settings]]&lt;br /&gt;
*[[shrink a PDF with gs]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other random stuff==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[cbr-929 mileage]]&lt;br /&gt;
*[[Teletype M28 keys]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[Special:AllPages]]&lt;br /&gt;
*[[:Category:Electronics]]&lt;br /&gt;
*[[:Category:Incantations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;!--        TODAY'S FEATURED PICTURE        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-tfp&amp;quot; style=&amp;quot;margin:4px 0 0 0; width:100%; background:none;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;&amp;quot;|&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; background:#faf5ff; color:#000; width:100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2  id=&amp;quot;mp-tfp-h2&amp;quot; style=&amp;quot;margin:3px; background:#ddcef2; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding:0.2em 0.4em&amp;quot;&amp;gt;Today's featured picture&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding: 2px&amp;quot; | [[File:Example.jpg]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Change_pulseaudio_device_settings&amp;diff=1411</id>
		<title>Change pulseaudio device settings</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Change_pulseaudio_device_settings&amp;diff=1411"/>
		<updated>2017-08-05T20:34:03Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# oh my god pulseaudio is so fucking annoying. There is NO WAY TO PREVENT it from&lt;br /&gt;
# resetting the device settings every single time something reopens the device.&lt;br /&gt;
# So EVERY SINGLE TIME, you have to re-run this or it will revert to the&lt;br /&gt;
# base volume and input port.&lt;br /&gt;
&lt;br /&gt;
pacmd set-source-volume alsa_input.pci-0000_00_1b.0.analog-stereo 10000&lt;br /&gt;
pacmd set-source-port alsa_input.pci-0000_00_1b.0.analog-stereo analog-input-linein&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Change_pulseaudio_device_settings&amp;diff=1410</id>
		<title>Change pulseaudio device settings</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Change_pulseaudio_device_settings&amp;diff=1410"/>
		<updated>2017-08-05T20:33:37Z</updated>

		<summary type="html">&lt;p&gt;Morris: fuck pulseaudio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# oh my god pulseaudio is so fucking annoying. There is NO WAY TO PREVENT it from&lt;br /&gt;
# resetting the device settings every single time something reopens the device.&lt;br /&gt;
# So EVERY SINGLE TIME, you have to re-run this or it will revert to the&lt;br /&gt;
# base volume and input port.&lt;br /&gt;
&lt;br /&gt;
pacmd set-source-volume alsa_input.pci-0000_00_1b.0.analog-stereo 10000&lt;br /&gt;
pacmd set-source-port alsa_input.pci-0000_00_1b.0.analog-stereo analog-input-linein&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Main_Page&amp;diff=1409</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Main_Page&amp;diff=1409"/>
		<updated>2017-08-05T20:32:32Z</updated>

		<summary type="html">&lt;p&gt;Morris: add another arcane incantation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Projects==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[networked AC current monitor]]&lt;br /&gt;
*[[current sensing components]]&lt;br /&gt;
*[[solar power instrumentation]]&lt;br /&gt;
*[[tube amplifier]]&lt;br /&gt;
*[[an accelerometer on a motorcycle]]&lt;br /&gt;
*[[remote sensor transmitter/receiver]]&lt;br /&gt;
*[[hard drive power usage]]&lt;br /&gt;
*[[PC board manufacturers]]&lt;br /&gt;
*[[optocouplers for teletype current loop]]&lt;br /&gt;
*[[RTTY demodulator using NJM2211]]&lt;br /&gt;
*[[Keying IC-7000 fsk from tty loop]]&lt;br /&gt;
*[[using Atmel's ATSHA204 sha256 chip]]&lt;br /&gt;
*[[USB-teletype]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[XBee radios]]&lt;br /&gt;
*[[SD cards on ARM/LPC]]&lt;br /&gt;
*[[NOTE regarding JTAG on Philips LPC]]&lt;br /&gt;
*[[Weird UART data rates]]&lt;br /&gt;
*[[PIC24 clock setup]]&lt;br /&gt;
*[[ST7565 LCD notes]]&lt;br /&gt;
*[[RN/WiFly 802.11 modules]]&lt;br /&gt;
*[[Sensirion humidity &amp;amp; temperature sensors]]&lt;br /&gt;
*[[i2c in userspace on linux (eg, raspberry pi)]]&lt;br /&gt;
*[[data storage capacity of teletype paper tape]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arcane incantations==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[mounting a partitioned image in linux]]&lt;br /&gt;
*[[ethernet bridge filtering]]&lt;br /&gt;
*[[KVM virtual machines in ubuntu]]&lt;br /&gt;
*[[recursive wget]]&lt;br /&gt;
*[[compiz settings by commandline]]&lt;br /&gt;
*[[installing grub bootblocks]]&lt;br /&gt;
*[[email alerts in ZoneMinder]]&lt;br /&gt;
*[[booting a floppy image on a flash drive]]&lt;br /&gt;
*[[turn off dpkg interactions]]&lt;br /&gt;
*[[debian / windows 7 dual boot]]&lt;br /&gt;
*[[Netgear GS108T and vlans]]&lt;br /&gt;
*[[installing fonts in debian]]&lt;br /&gt;
*[[debian on ~2012 Asus EeePC 1025C]]&lt;br /&gt;
*[[prevent windows from toggling usb serial control lines]]&lt;br /&gt;
*[[keepass with webdav on ubuntu]]&lt;br /&gt;
*[[diy SSL CA + android]]&lt;br /&gt;
*[[forcibly remove a stuck dm mapping]]&lt;br /&gt;
*[[fix weird tab situations for python in emacs]]&lt;br /&gt;
*[[rescan sata disk]]&lt;br /&gt;
*[[make raid set rebuild on spare]]&lt;br /&gt;
*[[make firefox stop trying to force https for a site]]&lt;br /&gt;
*[[find what device a luks volume is on]]&lt;br /&gt;
*[[make carddav work with roundcube 1.2]]&lt;br /&gt;
*[[disable charging LED with tasker on Galaxy S7]]&lt;br /&gt;
*[[change pulseaudio device settings]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other random stuff==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[cbr-929 mileage]]&lt;br /&gt;
*[[Teletype M28 keys]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[Special:AllPages]]&lt;br /&gt;
*[[:Category:Electronics]]&lt;br /&gt;
*[[:Category:Incantations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;!--        TODAY'S FEATURED PICTURE        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-tfp&amp;quot; style=&amp;quot;margin:4px 0 0 0; width:100%; background:none;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;&amp;quot;|&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; background:#faf5ff; color:#000; width:100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2  id=&amp;quot;mp-tfp-h2&amp;quot; style=&amp;quot;margin:3px; background:#ddcef2; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding:0.2em 0.4em&amp;quot;&amp;gt;Today's featured picture&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding: 2px&amp;quot; | [[File:Example.jpg]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Disable_charging_LED_with_tasker_on_Galaxy_S7&amp;diff=1408</id>
		<title>Disable charging LED with tasker on Galaxy S7</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Disable_charging_LED_with_tasker_on_Galaxy_S7&amp;diff=1408"/>
		<updated>2017-04-21T23:20:21Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Accessing Settings ==&lt;br /&gt;
Settings for individually enabling/disabling the charging LED indicator aren't&lt;br /&gt;
exposed in the settings UI, instead they're grouped together with low battery, missed event,&lt;br /&gt;
and voice recording.  &lt;br /&gt;
&lt;br /&gt;
The settings are visible to the android &amp;quot;settings&amp;quot; shell command, but helpfully Samsung has&lt;br /&gt;
misspelled &amp;quot;'''charging'''&amp;quot; as &amp;quot;'''charing'''&amp;quot; (!)&lt;br /&gt;
&lt;br /&gt;
== Changing values via commandline ==&lt;br /&gt;
So for instance to turn off battery lights at night, set up a schedule in tasker to turn LED indications off at bedtime:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings put system led_indicator_low_battery 0&lt;br /&gt;
settings put system led_indicator_charing 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then turn them back on in the morning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings put system led_indicator_low_battery 1&lt;br /&gt;
settings put system led_indicator_charing 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tasker Setup ==&lt;br /&gt;
In tasker, create a &amp;quot;bedtime&amp;quot; profile of type &amp;quot;''Time''&amp;quot; and set the hours to whenever you want bedtime to be.&lt;br /&gt;
&lt;br /&gt;
Let it create a new task, call it &amp;quot;''kill charging light''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For the task, add a &amp;quot;''Code''&amp;quot; action of type &amp;quot;''Run Shell''&amp;quot; and for the command, enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/su -c settings put system led_indicator_charing 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add another ''Code'' / ''Run Shell'' task for:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/su -c settings put system led_indicator_low_battery 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(or leave out the ''su'' and check &amp;quot;''Use Root''&amp;quot; if root mode in Tasker works; it doesn't with my current rom using Magisk su)&lt;br /&gt;
&lt;br /&gt;
Next, add the return task, &amp;quot;''enable charging light''&amp;quot; which is the same thing (use the clone task option) except with &amp;quot;'''1'''&amp;quot; instead of &amp;quot;'''0'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then go back to the ''Bedtime'' profile, long-press the &amp;quot;-&amp;gt; ''Kill Charging Light''&amp;quot;, and&lt;br /&gt;
select &amp;quot;''Add return task''&amp;quot;, and set it to the just-created &amp;quot;''Enable charging light''&amp;quot; task.&lt;br /&gt;
&lt;br /&gt;
Now every night at 11, the charging and low-battery LED indicators will be disabled&lt;br /&gt;
so it can be dark, and at 8am they'll be enabled again so you can have a visual&lt;br /&gt;
indicator of charging and low-bat.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Disable_charging_LED_with_tasker_on_Galaxy_S7&amp;diff=1407</id>
		<title>Disable charging LED with tasker on Galaxy S7</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Disable_charging_LED_with_tasker_on_Galaxy_S7&amp;diff=1407"/>
		<updated>2017-04-21T23:19:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;== Accessing Settings == Settings for individually enabling/disabling the charging LED indicator aren't exposed in the settings UI, instead they're grouped together with low b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Accessing Settings ==&lt;br /&gt;
Settings for individually enabling/disabling the charging LED indicator aren't&lt;br /&gt;
exposed in the settings UI, instead they're grouped together with low battery, missed event,&lt;br /&gt;
and voice recording.  &lt;br /&gt;
&lt;br /&gt;
The settings are visible to the android &amp;quot;settings&amp;quot; shell command, but helpfully Samsung has&lt;br /&gt;
misspelled &amp;quot;'''charging'''&amp;quot; as &amp;quot;'''charing'''&amp;quot; (!)&lt;br /&gt;
&lt;br /&gt;
== Changing values via commandline ==&lt;br /&gt;
So for instance to turn off battery lights at night, set up a schedule in tasker to turn LED indications off at bedtime:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings put system led_indicator_low_battery 0&lt;br /&gt;
settings put system led_indicator_charing 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then turn them back on in the morning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings put system led_indicator_low_battery 1&lt;br /&gt;
settings put system led_indicator_charing 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tasker Setup ==&lt;br /&gt;
In tasker, create a &amp;quot;bedtime&amp;quot; profile of type &amp;quot;''Time''&amp;quot; and set the hours to whenever you want bedtime to be.&lt;br /&gt;
&lt;br /&gt;
Let it create a new task, call it &amp;quot;''kill charging light''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For the task, add a &amp;quot;''Code''&amp;quot; action of type &amp;quot;''Run Shell''&amp;quot; and for the command, enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/su -c settings put system led_indicator_charing 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add another ''Code''/''Run Shell'' task for:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/su -c settings put system led_indicator_low_battery 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(or leave out the ''su'' and check &amp;quot;''Use Root''&amp;quot; if root mode in Tasker works; it doesn't with my current rom using Magisk su)&lt;br /&gt;
&lt;br /&gt;
Next, add the return task, &amp;quot;''enable charging light''&amp;quot; which is the same thing (use the clone task option) except with &amp;quot;'''1'''&amp;quot; instead of &amp;quot;'''0'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then go back to the ''Bedtime'' profile, long-press the &amp;quot;-&amp;gt; ''Kill Charging Light''&amp;quot;, and&lt;br /&gt;
select &amp;quot;''Add return task''&amp;quot;, and set it to the just-created &amp;quot;''Enable charging light''&amp;quot; task.&lt;br /&gt;
&lt;br /&gt;
Now every night at 11, the charging and low-battery LED indicators will be disabled&lt;br /&gt;
so it can be dark, and at 8am they'll be enabled again so you can have a visual&lt;br /&gt;
indicator of charging and low-bat.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Main_Page&amp;diff=1406</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Main_Page&amp;diff=1406"/>
		<updated>2017-04-21T23:08:33Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Arcane incantations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Projects==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[networked AC current monitor]]&lt;br /&gt;
*[[current sensing components]]&lt;br /&gt;
*[[solar power instrumentation]]&lt;br /&gt;
*[[tube amplifier]]&lt;br /&gt;
*[[an accelerometer on a motorcycle]]&lt;br /&gt;
*[[remote sensor transmitter/receiver]]&lt;br /&gt;
*[[hard drive power usage]]&lt;br /&gt;
*[[PC board manufacturers]]&lt;br /&gt;
*[[optocouplers for teletype current loop]]&lt;br /&gt;
*[[RTTY demodulator using NJM2211]]&lt;br /&gt;
*[[Keying IC-7000 fsk from tty loop]]&lt;br /&gt;
*[[using Atmel's ATSHA204 sha256 chip]]&lt;br /&gt;
*[[USB-teletype]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[XBee radios]]&lt;br /&gt;
*[[SD cards on ARM/LPC]]&lt;br /&gt;
*[[NOTE regarding JTAG on Philips LPC]]&lt;br /&gt;
*[[Weird UART data rates]]&lt;br /&gt;
*[[PIC24 clock setup]]&lt;br /&gt;
*[[ST7565 LCD notes]]&lt;br /&gt;
*[[RN/WiFly 802.11 modules]]&lt;br /&gt;
*[[Sensirion humidity &amp;amp; temperature sensors]]&lt;br /&gt;
*[[i2c in userspace on linux (eg, raspberry pi)]]&lt;br /&gt;
*[[data storage capacity of teletype paper tape]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arcane incantations==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[mounting a partitioned image in linux]]&lt;br /&gt;
*[[ethernet bridge filtering]]&lt;br /&gt;
*[[KVM virtual machines in ubuntu]]&lt;br /&gt;
*[[recursive wget]]&lt;br /&gt;
*[[compiz settings by commandline]]&lt;br /&gt;
*[[installing grub bootblocks]]&lt;br /&gt;
*[[email alerts in ZoneMinder]]&lt;br /&gt;
*[[booting a floppy image on a flash drive]]&lt;br /&gt;
*[[turn off dpkg interactions]]&lt;br /&gt;
*[[debian / windows 7 dual boot]]&lt;br /&gt;
*[[Netgear GS108T and vlans]]&lt;br /&gt;
*[[installing fonts in debian]]&lt;br /&gt;
*[[debian on ~2012 Asus EeePC 1025C]]&lt;br /&gt;
*[[prevent windows from toggling usb serial control lines]]&lt;br /&gt;
*[[keepass with webdav on ubuntu]]&lt;br /&gt;
*[[diy SSL CA + android]]&lt;br /&gt;
*[[forcibly remove a stuck dm mapping]]&lt;br /&gt;
*[[fix weird tab situations for python in emacs]]&lt;br /&gt;
*[[rescan sata disk]]&lt;br /&gt;
*[[make raid set rebuild on spare]]&lt;br /&gt;
*[[make firefox stop trying to force https for a site]]&lt;br /&gt;
*[[find what device a luks volume is on]]&lt;br /&gt;
*[[make carddav work with roundcube 1.2]]&lt;br /&gt;
*[[disable charging LED with tasker on Galaxy S7]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other random stuff==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[cbr-929 mileage]]&lt;br /&gt;
*[[Teletype M28 keys]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[Special:AllPages]]&lt;br /&gt;
*[[:Category:Electronics]]&lt;br /&gt;
*[[:Category:Incantations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;!--        TODAY'S FEATURED PICTURE        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-tfp&amp;quot; style=&amp;quot;margin:4px 0 0 0; width:100%; background:none;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;&amp;quot;|&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; background:#faf5ff; color:#000; width:100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2  id=&amp;quot;mp-tfp-h2&amp;quot; style=&amp;quot;margin:3px; background:#ddcef2; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding:0.2em 0.4em&amp;quot;&amp;gt;Today's featured picture&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding: 2px&amp;quot; | [[File:Example.jpg]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1405</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1405"/>
		<updated>2017-02-28T01:27:21Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* To-Do List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[https://www.youtube.com/user/teletweety/videos?sort=dd&amp;amp;view=0&amp;amp;shelf_id=0 Action videos!]'''&lt;br /&gt;
&lt;br /&gt;
This is a compact USB current loop serial adapter on a 1.6 by 1.4 inch pc board. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop (or pair of loops, if full duplex). Data is relayed bidirectionally between the two. It does not generate loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf]. &lt;br /&gt;
&lt;br /&gt;
'''[http://teletweety.com/usbtty_adapter.html Trouble installing INF file on windows?]'''&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (done, included in shipped firmware)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* handle sending and receiving BREAK signals (done)&lt;br /&gt;
* automatically sending pre-recorded messages like RYRYRYRY and quick brown fox (present but experimental, included in shipped firmware)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened. &lt;br /&gt;
* &amp;lt;s&amp;gt;8-bit (ASR33, etc) mode is currently untested on real hardware.&amp;lt;/s&amp;gt; It's been reported to work correctly on an ASR33. &lt;br /&gt;
* If you have &amp;quot;showbreak&amp;quot; mode enabled, both actual line breaks and also null characters may be displayed as &amp;quot;[BREAK]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1404</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1404"/>
		<updated>2017-02-28T01:26:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Known Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[https://www.youtube.com/user/teletweety/videos?sort=dd&amp;amp;view=0&amp;amp;shelf_id=0 Action videos!]'''&lt;br /&gt;
&lt;br /&gt;
This is a compact USB current loop serial adapter on a 1.6 by 1.4 inch pc board. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop (or pair of loops, if full duplex). Data is relayed bidirectionally between the two. It does not generate loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf]. &lt;br /&gt;
&lt;br /&gt;
'''[http://teletweety.com/usbtty_adapter.html Trouble installing INF file on windows?]'''&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* handle sending and receiving BREAK signals (done)&lt;br /&gt;
* automatically sending pre-recorded messages like RYRYRYRY and quick brown fox (present but experimental)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened. &lt;br /&gt;
* &amp;lt;s&amp;gt;8-bit (ASR33, etc) mode is currently untested on real hardware.&amp;lt;/s&amp;gt; It's been reported to work correctly on an ASR33. &lt;br /&gt;
* If you have &amp;quot;showbreak&amp;quot; mode enabled, both actual line breaks and also null characters may be displayed as &amp;quot;[BREAK]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Make_carddav_work_with_roundcube_1.2&amp;diff=1403</id>
		<title>Make carddav work with roundcube 1.2</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Make_carddav_work_with_roundcube_1.2&amp;diff=1403"/>
		<updated>2016-08-04T00:57:48Z</updated>

		<summary type="html">&lt;p&gt;Morris: Created page with &amp;quot;Install the carddav plugin: &amp;lt;pre&amp;gt; cd /var/lib/roundcube/plugins git clone https://github.com/blind-coder/rcmcarddav.git carddav chown -R www-data:www-data carddav &amp;lt;/pre&amp;gt;  Ther...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install the carddav plugin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/lib/roundcube/plugins&lt;br /&gt;
git clone https://github.com/blind-coder/rcmcarddav.git carddav&lt;br /&gt;
chown -R www-data:www-data carddav&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a bug in the db init stuff in the plugin.&lt;br /&gt;
In '''roundcube/plugins/carddav/dbmigrations/0000-dbinit/mysql.sql''',&lt;br /&gt;
in the &amp;quot;CREATE TABLE&amp;quot; for carddav_addressbooks, the field &amp;quot;last_update&amp;quot; is a&lt;br /&gt;
TIMESTAMP value but it tries to set the default to '0' which is invalid.&lt;br /&gt;
instead line 10 or thereabouts should read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        last_updated TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01', -- time stamp of the last update of the local database&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connect to the database and drop all the '''carddav_*''' tables. They refer to each other&lt;br /&gt;
so you may need to SET FOREIGN_KEY_CHECKS=0 before dropping them.&lt;br /&gt;
&lt;br /&gt;
The plugin will try to initialize the tables the first time a user logs in, so log&lt;br /&gt;
in and wait for it to run all the dbmigration scripts.&lt;br /&gt;
&lt;br /&gt;
Once it shows your mailbox, go into settings-&amp;gt;carddav and enter a carddav account.&lt;br /&gt;
It will take a while to display the address book the first time as it has to fetch&lt;br /&gt;
all the records and populate a local cache in mysql, which gets updated at the&lt;br /&gt;
interval specified in the config.&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=Main_Page&amp;diff=1402</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=Main_Page&amp;diff=1402"/>
		<updated>2016-08-04T00:54:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Arcane incantations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Projects==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[networked AC current monitor]]&lt;br /&gt;
*[[current sensing components]]&lt;br /&gt;
*[[solar power instrumentation]]&lt;br /&gt;
*[[tube amplifier]]&lt;br /&gt;
*[[an accelerometer on a motorcycle]]&lt;br /&gt;
*[[remote sensor transmitter/receiver]]&lt;br /&gt;
*[[hard drive power usage]]&lt;br /&gt;
*[[PC board manufacturers]]&lt;br /&gt;
*[[optocouplers for teletype current loop]]&lt;br /&gt;
*[[RTTY demodulator using NJM2211]]&lt;br /&gt;
*[[Keying IC-7000 fsk from tty loop]]&lt;br /&gt;
*[[using Atmel's ATSHA204 sha256 chip]]&lt;br /&gt;
*[[USB-teletype]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[XBee radios]]&lt;br /&gt;
*[[SD cards on ARM/LPC]]&lt;br /&gt;
*[[NOTE regarding JTAG on Philips LPC]]&lt;br /&gt;
*[[Weird UART data rates]]&lt;br /&gt;
*[[PIC24 clock setup]]&lt;br /&gt;
*[[ST7565 LCD notes]]&lt;br /&gt;
*[[RN/WiFly 802.11 modules]]&lt;br /&gt;
*[[Sensirion humidity &amp;amp; temperature sensors]]&lt;br /&gt;
*[[i2c in userspace on linux (eg, raspberry pi)]]&lt;br /&gt;
*[[data storage capacity of teletype paper tape]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arcane incantations==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[mounting a partitioned image in linux]]&lt;br /&gt;
*[[ethernet bridge filtering]]&lt;br /&gt;
*[[KVM virtual machines in ubuntu]]&lt;br /&gt;
*[[recursive wget]]&lt;br /&gt;
*[[compiz settings by commandline]]&lt;br /&gt;
*[[installing grub bootblocks]]&lt;br /&gt;
*[[email alerts in ZoneMinder]]&lt;br /&gt;
*[[booting a floppy image on a flash drive]]&lt;br /&gt;
*[[turn off dpkg interactions]]&lt;br /&gt;
*[[debian / windows 7 dual boot]]&lt;br /&gt;
*[[Netgear GS108T and vlans]]&lt;br /&gt;
*[[installing fonts in debian]]&lt;br /&gt;
*[[debian on ~2012 Asus EeePC 1025C]]&lt;br /&gt;
*[[prevent windows from toggling usb serial control lines]]&lt;br /&gt;
*[[keepass with webdav on ubuntu]]&lt;br /&gt;
*[[diy SSL CA + android]]&lt;br /&gt;
*[[forcibly remove a stuck dm mapping]]&lt;br /&gt;
*[[fix weird tab situations for python in emacs]]&lt;br /&gt;
*[[rescan sata disk]]&lt;br /&gt;
*[[make raid set rebuild on spare]]&lt;br /&gt;
*[[make firefox stop trying to force https for a site]]&lt;br /&gt;
*[[find what device a luks volume is on]]&lt;br /&gt;
*[[make carddav work with roundcube 1.2]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other random stuff==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[cbr-929 mileage]]&lt;br /&gt;
*[[Teletype M28 keys]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
*[[Special:AllPages]]&lt;br /&gt;
*[[:Category:Electronics]]&lt;br /&gt;
*[[:Category:Incantations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;!--        TODAY'S FEATURED PICTURE        --&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-tfp&amp;quot; style=&amp;quot;margin:4px 0 0 0; width:100%; background:none;&amp;quot;&lt;br /&gt;
| class=&amp;quot;MainPageBG&amp;quot; style=&amp;quot;width:100%; border:1px solid #ddcef2; background:#faf5ff; vertical-align:top; color:#000;&amp;quot;|&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; background:#faf5ff; color:#000; width:100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:2px&amp;quot; | &amp;lt;h2  id=&amp;quot;mp-tfp-h2&amp;quot; style=&amp;quot;margin:3px; background:#ddcef2; font-size:120%; font-weight:bold; border:1px solid #afa3bf; text-align:left; color:#000; padding:0.2em 0.4em&amp;quot;&amp;gt;Today's featured picture&amp;lt;/h2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#000;padding: 2px&amp;quot; | [[File:Example.jpg]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1401</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1401"/>
		<updated>2016-05-21T04:22:52Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[https://www.youtube.com/user/teletweety/videos?sort=dd&amp;amp;view=0&amp;amp;shelf_id=0 Action videos!]'''&lt;br /&gt;
&lt;br /&gt;
This is a compact USB current loop serial adapter on a 1.6 by 1.4 inch pc board. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop (or pair of loops, if full duplex). Data is relayed bidirectionally between the two. It does not generate loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf]. &lt;br /&gt;
&lt;br /&gt;
'''[http://teletweety.com/usbtty_adapter.html Trouble installing INF file on windows?]'''&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* handle sending and receiving BREAK signals (done)&lt;br /&gt;
* automatically sending pre-recorded messages like RYRYRYRY and quick brown fox (present but experimental)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened.&lt;br /&gt;
* 8-bit (ASR33, etc) mode is currently untested on real hardware.&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1400</id>
		<title>File:Usbtty-instructions.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1400"/>
		<updated>2016-05-05T03:02:05Z</updated>

		<summary type="html">&lt;p&gt;Morris: Morris uploaded a new version of File:Usbtty-instructions.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1399</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1399"/>
		<updated>2016-05-04T22:45:08Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB current loop serial adapter on a 1.6 by 1.4 inch pc board. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop (or pair of loops, if full duplex). Data is relayed bidirectionally between the two. It does not generate loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf]. &lt;br /&gt;
&lt;br /&gt;
'''[http://teletweety.com/usbtty_adapter.html Trouble installing INF file on windows?]'''&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* handle sending and receiving BREAK signals (done)&lt;br /&gt;
* automatically sending pre-recorded messages like RYRYRYRY and quick brown fox (present but experimental)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened.&lt;br /&gt;
* 8-bit (ASR33, etc) mode is currently untested on real hardware.&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1398</id>
		<title>File:Usbtty-instructions.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1398"/>
		<updated>2016-05-03T06:35:14Z</updated>

		<summary type="html">&lt;p&gt;Morris: Morris uploaded a new version of File:Usbtty-instructions.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1397</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1397"/>
		<updated>2016-05-02T07:14:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB current loop serial adapter on a 1.6 by 1.4 inch pc board. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop (or pair of loops, if full duplex). Data is relayed bidirectionally between the two. It does not generate loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* handle sending and receiving BREAK signals (done)&lt;br /&gt;
* automatically sending pre-recorded messages like RYRYRYRY and quick brown fox (present but experimental)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened.&lt;br /&gt;
* 8-bit (ASR33, etc) mode is currently untested on real hardware.&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1396</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1396"/>
		<updated>2016-05-02T06:44:28Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (experimental)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (probably won't bother)&lt;br /&gt;
&lt;br /&gt;
==Known Bugs==&lt;br /&gt;
* In Linux, if you press the button on the adapter board immediately after first connecting it to the host, but before opening it with a terminal program, it will hang and have to be disconnected and reconnected. &lt;br /&gt;
* Most of the commands/options listed as &amp;quot;experimental&amp;quot; in the documentation lack thorough safety checks or bounds checking.&lt;br /&gt;
* When put into firmware-update (DFU) mode, the loop is opened.&lt;br /&gt;
* 8-bit (ASR33, etc) mode is currently untested on real hardware.&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1395</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1395"/>
		<updated>2016-04-26T07:48:12Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Modification and firmware updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader. &lt;br /&gt;
&lt;br /&gt;
The firmware is written in C and built using GCC and avr-libc, and Dean Camera's LUFA USB support libraries[http://www.lufa-lib.org].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1394</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1394"/>
		<updated>2016-04-26T07:44:49Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification and firmware updates==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader, which can be activated&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1393</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1393"/>
		<updated>2016-04-26T07:43:56Z</updated>

		<summary type="html">&lt;p&gt;Morris: /* Modification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  To activate the bootloader, briefly short the two bare pads on the board marked &amp;quot;RST&amp;quot; - the orange LED will go out, and the green LED will blink slowly. The host computer will see the USB serial device disappear and be replaced with one called &amp;quot;Atmel DFU&amp;quot;. You can read and program the chip using Atmel's FLIP software[http://www.atmel.com/tools/FLIP.aspx] on most platforms, and the commandline tool &amp;quot;dfu-programmer&amp;quot; on Linux and Mac OSX. On windows you will also need a driver for it, which is provided in the FLIP download; all other OS's don't require any driver. To exit the bootloader, issue a DFU reset command or just power cycle the board. &lt;br /&gt;
&lt;br /&gt;
The bootloader uses 4kB of flash, leaving 28kB free for application software.  In addition to the USB bootloader, the hardware ISP programming lines are brought out on the back side of the board on labeled pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty]. If I make updates or changes to the firmware, I'll release them as intel-format hex files which can be flashed to the board using the DFU bootloader, which can be activated&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1392</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1392"/>
		<updated>2016-04-26T07:18:34Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://teletweety.com/usbtty_adapter.inf].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  The bootloader uses 4kb, leaving 28kb of flash free for application software. It is compatible with Atmel's &amp;quot;FLIP&amp;quot; software on most platforms, as well as linux &amp;quot;dfu-programmer&amp;quot; software. In addition, the atmega hardware ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1391</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1391"/>
		<updated>2016-04-26T07:17:56Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the windows INF file[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  The bootloader uses 4kb, leaving 28kb of flash free for application software. It is compatible with Atmel's &amp;quot;FLIP&amp;quot; software on most platforms, as well as linux &amp;quot;dfu-programmer&amp;quot; software. In addition, the atmega hardware ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1390</id>
		<title>File:Usbtty-instructions.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Usbtty-instructions.pdf&amp;diff=1390"/>
		<updated>2016-04-26T07:14:30Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1389</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1389"/>
		<updated>2016-04-26T07:03:21Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. Download the [[Media:usbtty-instructions.pdf|instruction sheet]] or the [[Media:usbtty_adapter.inf|Windows INF file]].&lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  The bootloader uses 4kb, leaving 28kb of flash free for application software. It is compatible with Atmel's &amp;quot;FLIP&amp;quot; software on most platforms, as well as linux &amp;quot;dfu-programmer&amp;quot; software. In addition, the atmega hardware ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1388</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1388"/>
		<updated>2016-04-26T06:55:46Z</updated>

		<summary type="html">&lt;p&gt;Morris: update 4/25/2016&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 1000 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega32u2 with a USB DFU-class bootloader installed via which the firmware can be updated or replaced.  The bootloader uses 4kb, leaving 28kb of flash free for application software. It is compatible with Atmel's &amp;quot;FLIP&amp;quot; software on most platforms, as well as linux &amp;quot;dfu-programmer&amp;quot; software. In addition, the atmega hardware ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. (written, being tested)&lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table (done 4/2016)&lt;br /&gt;
* the ability to select from multiple stored translation tables (done)&lt;br /&gt;
* hand sending and receiving BREAK signals (done)&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands (not yet)&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output. (not yet)&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1387</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1387"/>
		<updated>2016-04-26T06:46:35Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 250 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method anyway. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega16u2 or 32u2 with a USB CDC-class bootloader installed via which the firmware can be updated or replaced. Typical programming software like ''avrdude'' will recognize it as type &amp;quot;avr109&amp;quot;. The bootloader uses 4kb, leaving 12kb of flash free for application software on the 16u2 or 28k on the 32u2. The atmega ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. &lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table&lt;br /&gt;
* the ability to select from multiple stored translation tables&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output.&lt;br /&gt;
&lt;br /&gt;
==Schematic==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Loop-adapter1.png&amp;diff=1386</id>
		<title>File:Loop-adapter1.png</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Loop-adapter1.png&amp;diff=1386"/>
		<updated>2016-04-26T06:45:12Z</updated>

		<summary type="html">&lt;p&gt;Morris: Morris uploaded a new version of File:Loop-adapter1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Loop-adapter2.png&amp;diff=1385</id>
		<title>File:Loop-adapter2.png</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Loop-adapter2.png&amp;diff=1385"/>
		<updated>2016-04-26T06:42:52Z</updated>

		<summary type="html">&lt;p&gt;Morris: Morris uploaded a new version of File:Loop-adapter2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1384</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1384"/>
		<updated>2016-04-26T06:40:09Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|450px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 250 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method anyway. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega16u2 or 32u2 with a USB CDC-class bootloader installed via which the firmware can be updated or replaced. Typical programming software like ''avrdude'' will recognize it as type &amp;quot;avr109&amp;quot;. The bootloader uses 4kb, leaving 12kb of flash free for application software on the 16u2 or 28k on the 32u2. The atmega ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. &lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table&lt;br /&gt;
* the ability to select from multiple stored translation tables&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output.&lt;br /&gt;
&lt;br /&gt;
==Schematic/Layout==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1383</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1383"/>
		<updated>2016-04-26T06:39:41Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|290px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 250 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method anyway. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega16u2 or 32u2 with a USB CDC-class bootloader installed via which the firmware can be updated or replaced. Typical programming software like ''avrdude'' will recognize it as type &amp;quot;avr109&amp;quot;. The bootloader uses 4kb, leaving 12kb of flash free for application software on the 16u2 or 28k on the 32u2. The atmega ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. &lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table&lt;br /&gt;
* the ability to select from multiple stored translation tables&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output.&lt;br /&gt;
&lt;br /&gt;
==Schematic/Layout==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=File:Loop-adapter3.jpg&amp;diff=1382</id>
		<title>File:Loop-adapter3.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=File:Loop-adapter3.jpg&amp;diff=1382"/>
		<updated>2016-04-26T06:39:02Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1381</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1381"/>
		<updated>2016-04-26T06:38:21Z</updated>

		<summary type="html">&lt;p&gt;Morris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.jpg|290px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
[[File:loop-adapter4.png|290px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 250 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method anyway. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega16u2 or 32u2 with a USB CDC-class bootloader installed via which the firmware can be updated or replaced. Typical programming software like ''avrdude'' will recognize it as type &amp;quot;avr109&amp;quot;. The bootloader uses 4kb, leaving 12kb of flash free for application software on the 16u2 or 28k on the 32u2. The atmega ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. &lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table&lt;br /&gt;
* the ability to select from multiple stored translation tables&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output.&lt;br /&gt;
&lt;br /&gt;
==Schematic/Layout==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
	<entry>
		<id>https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1380</id>
		<title>USB-teletype</title>
		<link rel="alternate" type="text/html" href="https://www.heepy.net/index.php?title=USB-teletype&amp;diff=1380"/>
		<updated>2016-03-19T05:49:26Z</updated>

		<summary type="html">&lt;p&gt;Morris: tested baud rate to 260 baud&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compact USB to teletype current loop interface on a 1.6 by 1.4 inch pcb. It connects to a computer running Windows, Mac OSX, Linux, Android, or probably anything else via a USB Mini-B connector, and presents itself as a USB serial port, while the other end connects directly in series with a teletype loop. Data is relayed bidirectionally between the two. It does not provide loop current itself, so a loop power supply with fuse is needed if not already present. &lt;br /&gt;
&lt;br /&gt;
[[File:loop-adapter3.png|290px]]&lt;br /&gt;
[[File:loop-adapter2.png|350px]]&lt;br /&gt;
[[File:loop-adapter4.png|290px]]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Unlike most USB serial adapters, this one uses a general purpose microprocessor rather than a dedicated interface chip like FTDI, CP2102, etc. This allows features like onboard translation between ASCII and 5-level code, selectable auto-newline, unshift on space, and others. The yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. The two LEDs are inverted in sense so that on a half duplex line one will show mark and one will show space. &lt;br /&gt;
&lt;br /&gt;
On initial power-up, the interface's teletype side is set to 45.45 baud and will translate between teletype 5-level code (ITA-2, Baudot) and ASCII bidirectionally, so that from the point of view of the computer, it looks like a plain ASCII terminal.&lt;br /&gt;
ASCII codes sent to the interface which have no teletype code equivalent are ignored and not forwarded. The interface keeps track of LTRS/FIGS shift and sends the appropriate shifts as necessary. On power up it assumes LTRS until it discovers otherwise. If unshift-on-space is enabled, it will switch to LTRS mode if it sees a space character on the loop side. It can also be switched into non-translating mode, in which it simply passes through the lower 5 bits of all characters sent from the computer, and vice-versa, so that it can be used with computer software which expects to do this translation itself (i.e., BaudotRSS, HeavyMetal, etc.) In operation, the yellow LED flashes in sync with data sent from the computer to the teletype loop, and the green LED flashes in response to data coming from the loop. &lt;br /&gt;
&lt;br /&gt;
Pressing the '''SW1''' button on the interface board switches the device into '''command mode''', in which it ignores input from the teletype loop, keeps the output marking, and presents a command-line interface via USB to the computer. &amp;quot;help&amp;quot; shows available options and how to change them. Changes may be made on the fly and can remain temporary or be saved to permanent storage with the &amp;quot;save&amp;quot; command. If saved settings are present in permanent storage, they will be loaded and used automatically on power up. This way the device can be treated as transparent unless intentionally put into config mode. &lt;br /&gt;
&lt;br /&gt;
The loop side character timing and framing are synthesized completely in software, so entirely arbitrary baud rates can be specified, up to the limits of the optical interfaces (about 250 baud). Be careful of setting absurdly low baud rates. Common rates are recognized and precalculated timing used, but other arbitrary rates will get best-effort calculated timing which should be sufficient. Baud rate settings are taken only from the configuration command line, and rate changes sent the &amp;quot;normal&amp;quot; way from the computer are ignored, since typical teletype data rates are not supported via that method anyway. &lt;br /&gt;
&lt;br /&gt;
==Electrical==&lt;br /&gt;
The circuit board is physically divided in half. The loop-interface side is 100% completely electrically isolated from the computer interface side. If operating the board without an enclosure, it is '''very important''' to insure that nothing conductive comes in contact with it that might bridge exposed contacts and potentially carry high loop voltage anywhere near your computer's USB interface. The loop side is protected against inductive spikes from selector magnets on the line, and should tolerate currents from &amp;lt;20mA to over 100mA. The loop current is sensed non-inductively by a 150 ohm, 2 watt resistor in series with the loop, which provides current to the input side of an opto-isolator. The output side is switched by another optical isolator with an on resistance around 34 ohms. Both input and output can be connected in any polarity. The device has separate connections for input and output, so it can be used in a full-duplex application with two separate loops, but for half duplex operation normally the two connector blocks would be jumpered in series. (they are also completely electrically isolated from each other.)&lt;br /&gt;
&lt;br /&gt;
==Modification==&lt;br /&gt;
The controller is an Atmel atmega16u2 or 32u2 with a USB CDC-class bootloader installed via which the firmware can be updated or replaced. Typical programming software like ''avrdude'' will recognize it as type &amp;quot;avr109&amp;quot;. The bootloader uses 4kb, leaving 12kb of flash free for application software on the 16u2 or 28k on the 32u2. The atmega ISP programming lines are brought out on the back side of the board on pogo-pin pads, allowing replacement of the bootloader, recovery from any kind of software corruption, or eliminating the bootloader entirely to gain flash space. Source code for the current firmware is freely available on github[http://github.com/epvuc/usb-tty].&lt;br /&gt;
&lt;br /&gt;
==To-Do List==&lt;br /&gt;
Firmware improvements being considered are:&lt;br /&gt;
* transparent 7 or 8 bit passthrough mode for use with 33s and the like. &lt;br /&gt;
* The ability, from the config command mode, to modify the ascii/baudot character translation table&lt;br /&gt;
* the ability to select from multiple stored translation tables&lt;br /&gt;
* sending pre-recorded messages like RYRYRYRY and quick brown fox with short commands&lt;br /&gt;
* the ability to logically invert mark and sense for input and/or output.&lt;br /&gt;
&lt;br /&gt;
==Schematic/Layout==&lt;br /&gt;
[[File:loop-adapter1.png|800px]]&lt;/div&gt;</summary>
		<author><name>Morris</name></author>
	</entry>
</feed>