About

Sorry, I have not yet written a comprehensive “about” page for this blog. You may wish to take a look at the first two posts, “Control-Alt-Delete: a bit of History” and “Setting up a PIC environment (but which one? how?)” to get an initial idea of what the project is all about. [update:] You may also check the blog’s NQ-FAQ to answer some of the questions that you may have (or to post new ones). If you want to read the posts in a chronological order, it’s a good idea to start from the first post and then browse your way by means of the “Next” link on each post.

A few personal details on myself, should anyone care: my name is Angelos Varvitsiotis, and I live in Athens, Greece. I am married to Evi, and we have one little boy (and now expecting a second one soon!) two little boys. I own a PhD in computer engineering, in the area of computer networking, and I work as a networking consultant. This means that electrical engineering, PCB design and the like do not have really anything to do with my real-life profession, nor with my educational background. I am an electronics enthusiast, which is what led me into this adventurous project. Besides that, it seems that my hobby list is quite long: I am a slow biker, an amateur guitar player, a moderate singer, a clarinet apprentice, and a low-grade flute player, not to mention quite a few other hobbies in which I have failed to varying degrees :-).

Enjoy the blog!

9 Responses to “About”

  1. Saurabh Jain Says:

    Hi!

    I’m interested in helping you with the USB FXS project. I have some free time at hand right now. If there is something I can do to help the project on, do let me know.

    I am based out of India. I am not handy with electronics but can manage to get a board built, if that is required. I can, however, do Linux kernel and libusb coding. I have many years of VoIP experience.

    Regards,
    Saurabh

  2. openusbfxs Says:

    Hi Saurabh,

    Well, thanks, that’s a very welcome proposal! The project could for sure use some help in this area. I guess that, besides free time, having access to a working board is a prerequisite too… This means I need to build a couple more of them (one equals none, since one might fail — even my prototype has a bad contact somewhere and from time to time refuses to power up the DC-DC converter… anyway…) and send over to you one via the post (preferrably a working one :-)). Not something that I can finish by tomorrow, but I think I can manage it, so I ‘ll email you directly ASAP on the details.

    Thanks again for offering to help!

    Cheers,
    -Angelos

  3. Denver Abrahams Says:

    Hi!

    I’m really interested in this project as it will help me to roll out inexpensive IP Telephony solutions in under-privileged communities in South Africa.

    I have one important question though, will this device work in a linux box?. I have downloaded the project files and it seems to be MS VC project. I don’t think I will be able to help with the project in any way, but I will buy a lot of of them if they can work in a linux box and Asterisk without too much trouble.

    Please let me know on which platforms I can use it.

    Hoping to hear from you soon.

    Cheers,

    Denver

  4. openusbfxs Says:

    Hi, Denver,

    Thanks for dropping by and for your interest in the project.

    My understanding about the potential real-life value of this project is exactly in applications like the one you are mentioning. However, in its current state, the project is just an experiment progressing at a slow pace. While showing some encouraging signs, there is lots to be done yet in order to make the thing work as intended. The MS VC project(s — now there’s two of them) files that you saw on the Google code site are just for a test driver program, which tests connectivity, sets up values for the various registers of the chips, rings the phone set and outputs an audio file. Still not quite what you had in mind, is it?

    The roadmap of the project is to produce an Asterisk-compatible driver for the board (of course, to be run on Linux boxes), which sounds more like what you need. However, as of today, it is hard to tell how far ahead this target is. By all means, the project’s goal looks doable; however, I tend to get stuck into various details (like bad audio quality, which is what I am currently trying to resolve) for long periods of time — especially keeping in mind that Open USB FXS is not at all my primary occupation. Eventually, bugs seem to get resolved in a way or another, and I am confident that this will be the case with my current issues as well. My next step, btw, is to try out the same userspace “driver” program under Linux, to see if I can get any better audio performance.

    So, to answer your questions: hang on, Linux is on the way, and yes, Linux will be the final project’s platform. Let’s say that in a way it’s just a matter of time :-).

    Cheers,

    -Angelos

  5. Vincent Says:

    Hi Angelos,
    Not sure if you need help anymore. I am in China and I can help build, test and manfacture your board at low cost from PCB to full product. I have access to enormous types of IC components. I can help in design, testing and manufacturing of PCB, SMB, plastic case, label printing and product packaging. I have my own Tektronix Oscilloscope for troubleshooting. I have developed FXS and FXO modules based on si3210 and si3050 respectively for a PCI TDM card. They have been in production.
    regards,
    Vincent

  6. openusbfxs Says:

    Hi Vincent,

    Thanks a lot for volunteering to help. It is great to meet people who are willing to contribute in any way to an open-source project like openusbfxs!

    Please, let me first spare a few words on the project’s current state. Since June, I have made little progress, mainly due to the fact that we now have our second baby to take care of (trust me on this, a baby eats up all of the time that one could afford to a “pet-project” like openusbfxs — double that, if it’s your second child!).

    As far as hardware is concerned, I have one working prototype that I am experimenting with, plus a second one that doesn’t quite work and needs debugging and fixing (but I have no time at all to debug or fix that myself). I also have ready PC boards and materials for two more prototypes (but no time at all to assemble and test them).

    As far as the board’s firmware is concerned, there is still some work to be done. Mainly, I think that the best way to proceed there is to off-load some functions from the PC onto the board (for example, checking for on/off-hook status, DTMF input, etc.) and to pack the communication for these functions along with the PCM audio data on the USB isochronous stream. Thus, the PC will not have to poll asynchronously the board for such events. Another direction would be to develop an audio-class USB device, but I am quite convinced that this is not truly needed.

    The main body of effort that is needed is in the area of software (read: Linux device drivers). Lately, I have peeked into the DAHDI drivers (this is what Zaptel is called nowadays). Halas, it seems that the only way I could make sense of the code in there would be to lock myself in my cellar for weeks and study fiercely in complete isolation. And that’s something that I am unlikely to find the time to do for the next few weeks — or even months. The idea is to duplicate the driver for a TDM-based board that uses the 3210 and substitute the PCI communication with USB. It shouldn’t be impossible, but, as I said, it requires exploring and understanding the existing code.

    Bottom line: I am welcoming warmly any effort that could run in parallel with my own (more-or-less quiescent-state-) efforts. Which means, if you can and want to contribute in any way to the project in its current, early-stage state, please let me know. If, on the other hand, final-stage mass production sounds more like what you have in mind, I would say that this would have to wait until the project gets to a more mature state.

    Cheers,

    -Angelos

  7. Angelos Varvitsiotis Says:

    Here is an update [as of Jan 26 2010] to the current state of the project.

    I now have three prototypes, each one with some hardware issues: prototype #1 works, but occasionally fails to power up its DC-DC covnerter. Probably this is due to a bad via or a bad contact somewhere, because it tends to change when I transport the board around in my backpack. Prototype #2 works OK, but audio playback is of bad quality (I get lots of noise, which sometimes disappears and sometimes reappears). Prototype #3 produces no audio noise, but after some time it starts to make a clicking sound, which grows faster and faster and does not go away unless I disconnect the board for a minute or two. I suspect that the issues on boards #2 and #3 are probably due to bad capacitors and this is why I have order a full set and am going to replace all capacitors in both boards. Anyway, issues are not identical, and this makes me (optimistically) attribute them to bad solderwork or bad material quality, rather than to problems in the design. So, one thing I owe here is to come up with a couple of totally clean, working prototypes, either by fixing the existing ones, or by constructing some more.

    I also still owe to test the DC-DC converter with a 150uH power choke, which is more efficient, at least according to Silabs’ own documentation. [However, for low Vdc, the manufacturer suggests lower inductance values around 33-50uH which however are less efficient and consume more current than they should in a USB-powered design. Thus I am a bit confused here and feel that only trial-and-error will show me the right path.]

    The newest hardware design has a small patch as compared to the one published (the patch is a wire connection that is needed from pin 2 of the Si3210, \INT, to pin 13 of the PIC and a connection of this pin via a pull-up 10k resistor to the +5V supply). This patch is required in order to allow the PIC to read the 3210 \INT signal. If one does not add it, the board becomes somewhat sluggish and may induce noise from the SPI bus into the audio path; other than this, the board works without the patch. The Eagle schematic and PCB version on the project’s SVN already contain the patch, and the unpatched versions also exist in the same directory.

    The project’s BOM can be found here.

    The firmware has not changed dramatically, although there are a few changes here and there. The most important one involves probing the 3210 for hook state and DTMF digits and placing the outcome into packetized PCM data. The board’s VID/PID and manufacturer name have also changed. The bootloader code (in hex file format, suitable for initializing the PIC) is here and the actual firmware (both source and hex) is here.

    As for the software, I have recently completed a Linux device driver for the board. The driver is far from perfect, and for sure is not bullet-proof, however it works OK and permits access to the board from userland programs (e.g., this or this) that are easy to write and understand. As for the Windows test driver programs that I started with, I have dropped the GUI version, but I have kept the Windows command-line demo driver in sync with the latest firmware updates.

  8. Jeff Sadowski Says:

    I’m new to phone systems so I’m not sure what the differences are to all these terms like FXS and FXO and …
    What I would like to do is as follows create or buy a relatively inexpensive (< $100) devise to be able to ring and use a standard old rotary phone. I don't need it to understand the dialed number. although I'm not against it I think that is best left up to something like voice recognition that would get the number from hearing the tones/clicks sent from the phone. I'd like to be able to use the phone as standard audio microphone/speaker with an alsa interface.
    Reading someone's experience with Asterisk they mentioned hooking up regular wireless phones using a FXS device but didn't mention what it was or anything else. Looking for usb FXS and linux I came across openusbfxs and am curious if this would do what I would like? I see that there is nothing for sale but you mention chips to buy and I see a schematic diagram that I could potentially follow. It peaked my curiosity but I didn't see anyway to get answers.

    Is there a forum or a mailing list?
    Could I get an openusbfxs to ring an old phone and hear its loud old bells?
    Could I get an openusbfxs to use an old phone as a microphone and speaker to use with a)skype b)Asterisk
    If something better fits what I want could you please point me in the right direction.

    Thank You

  9. Angelos Varvitsiotis Says:

    Hi Jeff,

    Thanks for your comment. Here are some replies. Yes, Open USB FXS has a ring equivalent number (NREN) of 1, which means it can ring (at most) one old rotary phone with a mechanical ringer — at least in theory, it has the proper electrical characteristics to do that. There is no forum/list for Open USB FXS, but there is this blog, where you can post your comments and get answers as soon as I can provide them. You can use Open USB FXS with Asterisk, but not with Skype. Using Open USB FXS on Linux (with the “oufxs” Dahdi driver that you will find on Google Code), you cannot make the phone appear like a microphone/loudspeaker ALSA device. You can however write programs that read and write audio data directly from the device file that the driver creates (e.g. /dev/dahdi/1), so e.g., making an application that rings the phone and plays some music is easy — just a few lines of code. To use the phone as a telephony device though, you will need Asterisk.

    Unfortunately, there are no ready-to-buy Open USB FXS boards. You can get the PCB and a pre-programmed PIC microprocessor from Elektor magazine (see their February issue on their site). Alternatively, if you are interested in a DIY kit with all materials included, please contact me at openusbfxs–at–gmail–dot–com — but please be warned that I do not sell these kits, I only exchange them with other gadgets and gizmos of similar value (approx. thirty EUR per piece). On the right column of this blog you will find a link to a page on how to build your own board from materials.

    Hope all this helps!

    Cheers,

    Angelos

Leave a comment