Welcome to the (Not Quite) Frequently Asked Questions page. In here, I have tried to include answers to all that you ‘d like to know about this project (but, at least some of you were reluctant to ask — hence the “Not Quite” in my NQ-FAQ 🙂 ).
- What is Open USB FXS? Open USB FXS is an open-hardware project that aims at producing a low-cost USB telephone adapter board.
- What is the current status of the project? As of April 2010, the status is as follows: Hardwarewise, there are two boards that have been produced, a large-form and a “dongle”. I have produced working prototypes in both forms, however the latest tested dongle version has some heat issues and a redesigned version has been produced and is to be tested soon. The board’s firmware has been shown to work OK as well. Latest add-ons and patches allow piggybacking of DTMF and hook state samples onto IN packets, as well as piggybacking register-setting commands on the OUT packet stream. A latest fix also allows transparent clock alignment between the board and the USB host controller. A demo driver program for Windows (XP, Vista, etc.) is available that allows simple control of the board. A Linux kernel driver has been produced that allows manipulating the board with simple open(), read(), write() and ioctl() instructions from userspace programs. Finally, a second Linux kernel driver is being finalized, which ties the board to the dahdi (ex-zaptel) driver platform from Digium, allowing the board to work with Asterisk. As of now (April 27 2010), this dahdi-compatible driver still needs some testing and improvements and is going to be published soon.
- Is Open USB FXS (going to be) working with Windows or Skype? No, not yet. Windows interworking is at user-level and just for testing purposes and there is no kernel driver (yet). Although the current orientation of the project is for Asterisk, there is nothing that precludes Open USB FXS to work under Windows. So, if you are interested in developing a Windows driver, please contact me.
- Where is the source? In the project’s Google Code page. To just browse through the code, it, go to Source -> Browse. To use/compile/etc., you ‘d better use an SVN client and checkout the code. The SVN trunk part contains the Eagle source files, the PIC firmware and USB boot loader source and binaries, the source for the Windows command-line console test program and the native Linux kernel driver. The dahdi-compatible Linux driver is to be published soon. The SVN tags part contains an older (devel0.0) version of all the above minus the Linux drivers frozen as to work together; it contains also GUI versions of the Windows test program.
- What is the license for Open USB FXS? There are two licensed items: this blog, including any “tutorial” material that it contains, and the source code. They are both licensed by free/open-source licenses. The blog and accompanying material (schematics, diagrams, explanations, etc.) are licensed under the Creative Commons license. The source is licensed under GPLv3.
- What do these licenses mean anyway? The CC license means that you are free to use, adapt, print, etc. the material contained in this blog if you deem it is useful, provided that you attribute the work to its author (yes, this is me) and include a reference to the original work (e.g., a URL). The GPLv3 license is more complicated, but essentially it means that you can do lots of things with the source (use it, copy it, reproduce it, even sell it if you like) but you have to provide reference to the original source and your code has to remain free and open: you cannot “close” the code and sell it as closed-source software. The Open USB FXS source is and has to remain free/open-source.
- Is Open USB FXS a product? Strictly speaking, no, not yet. I am looking to get a relatively decent number of boards (and kits, see next item) produced, so you might be able to order yourself a board in a month or two (say, about the end of May 2010.
- Where can I buy a ready-made board/a DIY kit/a PCB/materials? I am in the process of making a limited number of ready-made boards or PCBs and DIY kits available at the bare price of materials (plus assembly and testing costs, for ready boards) to anyone who is interested in contributing to the project [“contributing” does not necessarily mean write firmware or kernel driver code; one might just as well try the board in different environments and report bugs or other issues back to me]. Soon thereafter, boards can be mass-produced (well, “mass” might be just one or a few hundred, at the time…) and be made available for ordering for non-developers as well.
- I am interested in finding a ready USB FXS ATA product. There are quite a few USB ATAs out there. Their cost varies from a few tens to the order of one hundred dollars, depending mainly on whether you shop directly from China where they are all built nowadays. I cannot provide a list here; do your own market research.
- Can I use Open USB FXS in my own project? Sure, that’s perfectly OK. However, I have received some (“lots of” is not exactly correct) requests that show some mis-guidance: if you are about to make a hardware project of your own, perhaps re-designing the whole thing from scratch is better than trying to copy this project into your own. Perhaps if you are building a whole-new project you don’t need USB at all. Open USB FXS contains lots of USB-specific quirks, that you might avoid if you do not really need USB.
- Can I contribute to the Open USB FXS project? Yes! Sure you can! You can do lots of things and here is a list with some ideas. (1) You can try to improve the design in many ways without really departing from it; this would mean, design a better PCB, design a variant, e.g., with transistors instead of the costly Si3201, or with the more efficient MOSFET-based DC-DC converter. (2) You can try to come up with an augmented design, e.g. add a FXO port (this would require one additional Silabs chip, a bistable relay and circuitry to control it and a good quantity of magic trickery to get the PIC to control all of these). (3) You can just try to build a board and contribute to the development of the source code (that is, the kernel and Asterisk channel drivers) — this is actually where I am seeking some active help these days.
- How can I contact you about getting some advice, contributing to the project, propose ideas, or for any other matter? If you have never contacted me before, you can post a comment to this blog. All comments are moderated, so you may note in the comment text that you wish to contact me without worrying about your comment going public immediately.
Please help me turn this NQ-FAQ into a FAQ by just asking more frequently your questions! 🙂