Till Harbaum Driver
iPOD Charger - The circuit's pretty simple, basicly it's just a voltage regulator. Both the LM317 and the REG1117A (LDO) fit the PCB, maybe there are even more types that i'm aware of that can be used on it. I did add one extra thing: a LED that shows if the connected device is consuming power. To do this I used a shunt resistor and a current converter. I choose 0.2 ohm for the shunt, since it's not hard to come by and should only drop 0.1VAT500mA. Either an iNA168 (current output) or an iNA193-198 (iNA194 is best in this case) (voltage output) will fit as current converter. The trip point at which the LED should start to burn can easily be adjusted by one resistor (in case of the iNA168) or by two (in case of the iNA193-198). in the schematic it is set at 100mA using an iNA168 using a 950k resistor. The Schmit buffer is a Texas instruments Little Logic chip (1G17). __
Isolated USB-to-UART converter builds in 20 minutes for $20 - EDN Design Ideas: 08/31/2015 This Design idea describes a simple project that embedded developers will love for keeping their computers safe from rogue USB devices __ Circuit Design by Jacob Beningo
From: Till Harbaum till@ha. 2016-03-20 11:22:22 Hi, i am too sorry. Having searched half the evening a few seconds after asking my question i found the 'Specifying libraries by hand' section in the manual. PPM RC to USB Interface. This project is a USB joystick controlled by a PPM radio remote control transmitter. There are a lot of such projects around based on different MCUs and USB drivers. Alternative I started looking at USB I²C adapter, but they are expensive. There is one project though, which looked very promising, and it didn't require a full-fledged Arduino either: Till Harbaum's I²C-Tiny-USB 3. It uses an ATtiny85 board - as the name suggests, it's tiny, and turned out to be a.
LCD 2 USB - LCD2USB is a open source/open hardware project. The goal of LCD2USB is to connect HD44780 based text LCD displays to various PCs via USB. LCD2USB was meant to be cheap and to be made of easily available parts. it is therefore based on the Atmel AVR Mega8 CPU and does not require any difficult to obtain parts like separate USB controllers and the like. __ Designed by Till Harbaum <Till @ Harbaum.org>
LED Light - A simply and easy-to-make circuit, useful when working with the computer at night. (6/08/2006) __ Designed by Jose Pino
LED Load - The board supports driving two separate tri-color LEDs. More can be setup inline if desired. Currently the software only uses the second LED and its color represents the CPU load of the system in real-time. Blue for idle and gradients light blue, green, yellow, orange, and finally red indicating heavy CPU utilization. if the system fails to respond, the LED begins flashing RED to indicate a lack of communication from the software. This lets you easily identify a crashed machine in a rack for example. __
Link Neatly Measures Temperature - 10/26/00 EDN Design Ideas: Figure 1 shows a convenient and neat way to measure temperature using the USB of a PC. An ADM1023 IC senses the temperature, and an Anchor Chips EZ-USB AN2131SCµC provide as control. The ADM1023 is a low-cost device with an accuracy of 1°C and a resolution of 0.125°C. The IC is a two-channel device that can measure its own local temperature and the temperature of a remote location __ Circuit Design by Mary Burke, Analog Devices, Limerick, Ireland
Low-Power Car/Bike USB Charger - Looking for an efficient USB charger that can operate from a 12V car battery? This unit functions at up to 89% efficiency and can charge USB devices at currents up to 525mA. Best of all, it won?t flatten the battery if it's left permanently connected, as long as you remember to unplug the USB device.__ SiliconChip
Macro - that combines a complete USB transaction layer with an 8051 microcontroller core and a functional block that implements the application-specific functions. This macro was developed and is supported by Trenz Electronics for use with an XSV Board__
MP-3 Stereo Transmitter with USB control from a PC - This low cost MP-3 player was designed to be run from a PC via a USB interface. The MP-3 audio from a PC sound card is transmitted to a home stereo via a synthesized FM Transmitter. Also included is a 433 MHz wireless remote control to provide basic VCR type functionality to the whole design. __ Designed by Steve Hageman
Multiple Output DC/DC Converter Runs Off 2-Cell AA Batteries USB or AC Wall Adapter - DN1006 Design Notes__ Linear Technology/Analog Devices
Till Harbaum Driver Jobs
New ICs Simplify Battery Charging from the USB - DN320 Design Notes __ Linear Technology/Analog Devices
Phone USB charge hack - iphone, ipad, HTC phone, how to charge via home made charge cable __ Designed by Thomas Scherrer OZ2CPU
PIC USB Interface with FT245 - This is a simple design that interfaces a PIC 16F877 microcontroller to the USB bus using the FTDI FT245 USB FiFO device.
it has been designed using a simple single sided PCB with only. ( __ Designed by Ian Stedman
Power USB Devices From a Vehicle - 11/18/10 EDN Design Ideas: Supply power to two USB devices from the cigarette lighter or other power source. [Design ideas by Fons Janssen, Maxim integrated Products inc, Bilthoven, the Netherlands __ Circuit Design by Fons Janssen, Maxim Integrated Products Inc, Bilthoven, the Netherlands
Powered AA NiMH
& NiCd Battery Charger - The charger in this project is designed to charge two AA NiMH
or NIC d cells of any capacity (as long as they are the same) at about 470mA. it will charge 700mAh NIC ds in about 1.5 hours, 1500mAh NiMH
s. __ Designed by Stefan Vorketter
Power-supply operates from USB port - 09/23/10 EDN Design Ideas: Get 1.25V to 3.75V from an adjustable regulator. __ Circuit Design by Stefano Palazzolo, Senago, Italy
Printer Sharing Switch - I had two computers, a Mac MinI and a generic Windows computer. Both were on different networks, but in the same room, and I wanted to share a Lexmark USB laser printer between the two of them. I ended up making this switch to share the printer between the two computers __ Designed by Dick Cappels
Programmer for Atmel AVR Controllers - USBasp is a USB in-circuit programmer for Atmel AVR controllers. it simply consists of an ATMega48 or an ATMega8 and a couple of passive components. The programmer uses a firmware-only USB driver, no special USB controller is needed. __
RDS Coder Board using ATmega32 - This board is a RDS coder using an ATMEL AVR ATmega32. This board can be controled by a RS232 link, USB interface or SPi. TA data is displayed wiyth a LED and can be controled by :, Hardware input, RS232, USB, SPI (not yet implemented) __
RS232 Serial to USB Converter - This is simple RS232 Serial to USB Converter that doesn’t need any further explanations. You can use it for any projects that might need it. Diagrams for USB and DB-9 female connectors are provided. __
Self-powered Soundcard - High fidelity external USB Soundcard / USB Headphones project that can be built for your PC or Mac. it is based on the latest PCM2706 IC which functions as a high quality, crystal clear 16-BiT Stereo DAC. it is a single chip digital-to-analog converter that offers two D/A output stereo channels, digital S/PDiF output and requires very few external components. PCM2706 includes integrated USB 1.0 & USB 2.0 compliant interface controller and it is conveniently powered directly from USB connection. PCM2706 is a USB plug-and-play device and does not require any driver installation under Windows XP and Mac OSX. __
Simple Circuit Efficient All-In-One USB Power Management IC Solution - DN1008 Design Notes__ Linear Technology/Analog Devices
Simple Circuit Ft245 USB Oscilloscope for the PC - if you are thinking about adding a USB interface between your project and a PC, read on. implementing USB is now easier than you think. Eddy insam will show you how. The USB (Universal Serial Bus) provides a new way of interfacing low and medium speed peripherals to personal computers. That old workhorse, the RS232 connector, is fast becoming obsolete, even becoming absent in newly purchased PCs. __
Sound Card with PCM2702 - Make a sound card is no more a complex issue. if you use great IC PCM2702 from BURR BROWN / Texas instruments you can create a fully functional USB sound card. This sound card can be__
Supply 2A Pulses for GSM Transmission from 500mA USB or PCMCIA Ports - DN307) Design Notes__ Linear Technology/Analog Devices
Supply Derives 5 & 3.3V from USB port - 20-Dec-01 EDN Design Ideas: The circuit in Figure 1 derives its power from a USB port and produces 5 and 3.3V supply rails for portable devices, such as digital cameras, MP3 players, and PDAs. The circuit allows the port to maintain communications while, for example, charging a lithium-ion battery. IC 2 boosts the battery voltage, VBATT, to 5V, and IC 3 buck-regulates that 5V output down to 3 __ Circuit Design by Chad Olson, Maxim Integrated Products, Sunnyvale, CA
NOTE
While the XU1541 as described here works, it is very low-cost. Unfortunately, this also means you have many restrictions. For example, fast parallel transfers, as well as fast transfers with 1570/1571 devices do not work.
The XUM1541 is the successor of the XU1541. The XUM1541 is a framework to build several devices. The one best know is probably the ZoomFloppy which can be purchased ready-built.
Before building an XU1541, consider if an XUM1541/ZoomFloppy, although more expensive, is not a better choice.
NOTE
The xu1541 project was started by Till Harbaum. In December 2007, he announced that he lost interest in the project and cancelled it completely. This web page here is mainly a copy from his web page, so it can be used as a base to build the xu1541 cable. The xu1541 cable will be supported by the OpenCBM team. If you have any questions, suggestions, etc., please feel free to send them to the opencbm-user mailing list (Subscription), or file a bug/feature request or support request on the Sourceforge Tracker.
Please, do NOT contact Till, as he is not interested in this project anymore!
What is the xu1541?
The xu1541 was the modern way to connect CBM IEC bus devices to todays USB equipped PCs (The more modern alternative is the XUM1541). It was meant to replace the printer port solutions based on the so-called original x1541 cable. The xu1541 interface allows you e.g. to attach a VIC1541 disk drive to your desktop PC as depicted below. This allows for easy transfer of disk images from and to the old units and helps you preserve your ancient data.
The xu1541 is a proprietary interface. It does not transform the VIC1541 into a standard usb mass storage compliant device. Instead it provides a means to send low level IEC commands forth and back via the USB. PC software developed to support this interface may then directly access the disk drive and the contents of a disk inserted. It should also be possible to access other IEC devices like printers. Currently e.g. the git version of the OpenCBM software supports this interface.
Intended audience
This project works with a variety of CBM disc drives (1541, 1541-II, 1570, 1571, 1581, SX-64's internal floppy). There have been also some tests on different brands and types of PC, running on Windows, Linux, and Mac OS X.
However, the xu1541 is currently only recommended for people who are willing to cope with glitches and will perhaps even do some testing and bug hunting. For example, you should be able to flash a new firmware on your own.
Design goals
The xu1541 was designed to be made of easily obtained parts, easy to assemble and cheap. In order to avoid having to write all the necessary PC software, the xu1541 was designed to easily integrate into existing software developed for the original x1541 parallel cable family.
The xu1541 is not meant to be the all-in-one cable. It is meant to connect the PC to CBM IEC serial periphery like the VIC1541 floppy disk drive. It cannot act as CBM IEC client and can thus not be used to emulate a floppy disk drive with the PC. Furthermore it does not support the so-called nibblers, meaning that the cable cannot be used to transfer copy protected disk images from and to the VIC1541. These limitations are due to the simplicity of the design. A CBM IEC floppy emulation requires an interface to respond faster to incoming requests from the C64 than the xu1541 currently can do with the software USB implementation. Nibbler support requires a 8 kilobytes (one VIC1541 disk track) buffer which exceeds the 1 kilobytes RAM present in the Atmega8 used on the xu1541. These options are left for future and more complex and more expensive USB to IEC solutions, like the xum1541.
The xu1541 is fully compatible with all tools delivered with the OpenCBM package. More precisely, OpenCBM includes full support for all the features of the xu1541. Therefore, it fully supports e.g. the tools cbmctrl
, cbmcopy
, cbmformat
and d64copy
. It allows to control the disk drive (e.g. read the drive status or the directory), it allows to format a disk, to copy single files from and to the disk, and to copy entire not-copy-protected disk images (d64 images).
Implementation
The xu1541 is based on some other projects. These are:
- lcd2usb, a project of Till Harbaum on which he based the first xu1541 prototype,
- OpenCBM, formerly cbm4linux, a framework for accessing the CBM IEC bus under linux and windows,
- cbm4win, the windows incarnation of OpenCBM,
- V-USB, a great software implementation for the AVR (more precisely, the xu1541 still uses AVRUSB, the older version of it),
- usbtiny, another software USB implementation for the AVR,
- AVRUSBBoot, a USB boot loader for the AVR,
- libusb, a user space USB interface library, and
- libusb-win32, the windows port of the libusb.
The firmware of the xu1541 device is based on the software USB solutions for the AVR CPU. It also includes parts of the source code from OpenCBM, namely parts of the linux kernel driver for the x1541 cable family. This includes generic CBM IEC routines following the communication style of the stock c64 as well as the special 'speeder' modes supported by OpenCBM.
On the PC side the OpenCBM framework has been updated to be able to redirect the IEC communication via USB. Thus, it uses the libusb now to access the USB based xu1541. Other software intended to make use of the xu1541 cable thus needs libusb support as well. This e.g. means that very old DOS programs like Star Commander cannot easily be updated to support the xu1541 since there's no USB support for DOS. (However, with the help of OpenCBM, the Star Commander or other tools should be able to access xu1541 drives from inside of Windows!) On the other hand, the platforms that lack a printer port driver for the old x1541 cable family but have libusb support can be equipped with the xu1541. This is e.g. true for MacOS X, Solaris and some freeBSD platforms which weren't able to support the x1541 printer port cable family and thus weren't supported by OpenCBM so far.
CBM IEC support
The current xu1541 can act as a CBM IEC master only. This means that it can play the role of a C64 and control a floppy disk or printer. It can not be connected to a C64 in order to act as a virtual disk drive. This is due to the fact that the software USB solution used in this project prevents the AVR from being able to react fast enough on incoming requests (the USB stack requires that no other hardware interrupts are being used). This very interesting application is left for the successor of the xu1541.
In order to support the CBM IEC protocol at a reasonable speed, some aspects of the protocol are handled inside the xu1541 itself. The downside of such an approach is that 'speeder' support has also to be hardcoded into the firmware of the xu1541. The speeder support routines present in the current xu1541 version are the 'serial1', 'serial2' and 'pp' (d64copy and cbmcopy versions) routines from the OpenCBM package. The latest version of the xu1541 firmware package includes a BIOS with boot loader to ease the implementation of new speeder routines and to help the xu1541 to keep pace with the ongoing development of OpenCBM.
The xu1541 also allows to control each IEC control line seperately over the USB. This approach is only recommended for low performance things like device initialization etc. Using this approach causes a seperate USB transfer to take place for every single change of one of the IEC lines resulting in several USB transfers for every single bit to be tranferred. This is possible but nowhere near fast. This approach is therefore e.g. only being used during device initialization right before the accelerated 'speeder' modes are being used. The data transfer phase itself then uses the specialized pre-defined byte transfer routines mentioned before. This entire approach has the advantage of moving only the timing critical byte transfer routines into the xu1541 itself and thus reducing the probability of having to change these functions in the firmware once e.g. bugs in the current speeder protocol implementations are found.
Host support
Since the xu1541 implements a proprietary USB-to-CBM-IEC protocol only host software aware of the xu1541 is able to make use of the interface. The xu1541 cable is supported by the following host software:
The hardware
The hardware is designed to be as simple as possible. It therefore consists of through-hole components only. Additionally all components are cheap (less than EUR 5 total) and easily available e.g. from Reichelt. The entire device is powered from USB and doesn't need an additional power supply.
The xu1541 includes two IEC connectors (X2 and X3). Both are connected in parallel and can both be used at the same time. The parallel port connector SV1 can be used to connect one of those parallel speeder cables that once were a popular way to speed up the slow 1541 in these ancient days.
Version 1.1 of the PCB allows for two popular types of the DIN 6 sockets. The version sold bei Reichelt (see part list below) fits as well as the Hirschmann connector.
The parts list
I have prepared a shopping cart at Reichelt. It contains the following parts:
- Part
- Quantity
- Name
- Q1
- 1
- 12Mhz crystal, HC49U package
- 12-HC49U-S
- R1
- 1
- 1.5k ohm resistor
- 1/4W 1,5k
- R2, R3
- 2
- 68 ohm resistor
- 1/4W 68
- R4
- 1
- 220 ohm resistor
- 1/4W 220
- R5, R6, R7
- 3
- 10 ohm resistor
- 1/4W 10
- C1, C2
- 2
- 22pF ceramic capacitor, 2.54mm
- KERKO 22P
- C3, C5
- 2
- 100nF capacitor, 5.08mm
- Z5U-5 100N
- C6
- 1
- 10μF electrolytic capacitor
- RAD 10/35
- SV1
- 1
- 20 pin parallel connector
- WSL 20G
- SV2
- 1
- 10 pin ISP connector
- WSL 10G
- X1
- 1
- USB-B print connector
- USB BW
- X2, X3
- 2
- 6 pin DIN sockets
- MABP 6
- LED1
- 1
- LED 3mm yellow
- LED 3MM GE
- IC1
- 1
- Atmega8-16 DIP
- ATMEGA 8-16 DIP
- 1
- socket for IC1
- GS 28P-S
- D1, D2
- 2
- 3.6V zener diode
- ZD 3,6
Firmware upload
The AVR CPU of the xu1541 requires a firmware to be installed in order to make it work. In fact, it needs a BIOS (based on the boot loader from Thomas Fischl) and the 'real' firmware. You have to install the BIOS (bootloader) first, then the firmware.
Installing the BIOS (for the first time)
If there is already a BIOS installed on your xu1541, you can update the xu1541 over the USB cable. If there is no BIOS yet installed, a special download cable/interface connected to connector SV2 is required to download either the BIOS. Various download solutions exist from the simple STK200 compatible interface to devices like the stk500, the AVR-Doper, or the AVR Dragon.
Once such a cable is connected, the BIOS is uploaded from a PC using programmer software like uisp (linux), avrdude (windows, macos and linux) or Ponyprog (linux and windows). The Makefile in the xu1541 git is prepared to support the stk200 compatible adapter using avrdude under linux. To use it just enter 'make program-avrusb'. This should also work under Windows.
The command required to manually flash the BIOS (bootldr-xxxx.hex in this example) using the stk200 compatible adaptor is:
or
Two versions of the BIOS exist. Both provide the same functionality but are based on different AVR usb implementations. It shouldn't make a difference which version you use. But if you encounter problems it may be worth giving the other version a try. Please report such incompatibilities.
Flashing the firmware
Once the BIOS is installed, it can be used to easily install the firmware itself via USB. In order to install the firmware on a BIOS equipped xu1541 the following steps are required:
- Plug in the xu1541, if it is not already. If there is no firmware on the xu1541, the LED will go on and stay on. If there is already a firmware on the xu1541, the LED will go on for a fraction of a second, and go off afterwards.
- Use the upload tool with latest firmware:
make update-firmware
- Use the device as usual
Updating the BIOS
If you have already put a BIOS on the xu1541, you have two options to update to a newer BIOS version: Either, you can flash it with an external tool, or you can use the BIOS itself to update the BIOS. To do this, perform the following steps:
- Plug in the xu1541, if it is not already. If there is no firmware on the xu1541, the LED will go on and stay on. If there is already a firmware on the xu1541, the LED will go on for a fraction of a second, and go off afterwards.
- Use the upload tool with latest firmware:
make update-bios-avrusb
ormake update-bios-usbtiny
, depending upon which BIOS you want to flash. - You must reflash the firmware, as described above
- Use the device as usual
There is also the possibility to flash BIOS and firmware in one step. For this, replace the command make update-bios-xxxx
by make update-all-avrusb
or make update-all-usbtiny
.
What to do if you flashed a wrong firmware, or the flash failed?
There is the chance that something went wrong when flashing the firmware, and the xu1541 does not react anymore. In this case, you cannot simply flash a new firmware, as the firmware is needed to start the BIOS boot loader. Anyway, there is a way to force the BIOS to go into boot loader mode, even when the firmware flash failed:
- Unplug the xu1541
- Place a jumper switch between pin 9 and 10 of the 10 pin header (SV2)
- Plug the device in, the LED should go on and stay on (the boot loader is active)
- Use the upload tool to re-flash the firmware:
make update-firmware
- Unplug the device
- Remove the jumper switch
- Plug the device into the USB, the LED should flash a fraction of a second (the firmware is active)
You can also use the jumper switch between pin 9 and 10 of the 10 pin header (SV2) in order to flash a new BIOS. In this case, replace the command make update-firmware
with the command make update-bios-avrusb
or make update-bios-usbtiny
.
Till Harbaum Driver Download
Downloads
The latest version can always be found in the OpenCBM SCM.
Links
Till Harbaum Driver Ed
- OpenCBM, formerly cbm4linux and cbm4win, a framework for accessing the CBM IEC bus under linux and windows
- V-USB, software USB for the AVR platform, (more precisely, the xu1541 still uses AVRUSB, the older version of it)