Recent blog entries for Creslin

So once again, I haven't written for a while. It seems that with school and work I don't have much time to do much blogging. Of late, I have been working on kind of an interesting project at work. I'm writing an interface in zaptel so that we can use hardware assisted HDLC and CRC calculation on D-channels for ISDN equipment. Currently, it's done in software and is not very resilient to missed interrupts. It still works, but you could have retransmitted frames and so forth that you could potentially get around with an interface with additional buffering. I've got it basically running, but there is still some phantom bug that causes my kernel to crash on me. Aside from all that, I think I'm going to try to get some more work done on libss7 tonight. I haven't been able to work on it since school started and I feel it has been sorely neglected. Just need to write a couple more ISUP messages and parameters.

Personal: I haven't written in a long time and I'm going to be totally lame and only write a few lines. I recently got the opportunity to go to FOO camp in Sebastopol CA at the O'Reilly offices there. It was a really great experience that I was really glad that I could go for. I met a lot of really neat people that I wouldn't have had the opportunity to meet otherwise.

Work: So at my work, I get to do a lot of different things. I rarely ever get to work on the same thing one week as I do the next. So right now, I'm working on porting a proprietary voice mail application over to run on zaptel. I've got just about everything running except for call progress tone detection. The library I'm using for DSP functions does all the standard DTMF and fax tone detection, but it doesn't have any hooks for doing user-programmable tone detection (which is a little bit more complicated it seems). So I get to learn how to be a DSP engineer this week :-)

School: Ok, so school started up this last week. I have a few new classes this semester. I'm taking Western Civilization, Intro to Ethics, Linear Algebra, and Computer Organization. I don't forsee the Computer Organization class being to hard considering we started off our first day with some assembly programming. When I was in high school, I used to distract myself from my classes with z80 assembler. MIPS assembler looks like it's going to be a piece of cake. You've got lots of cool registers to work with too, ere go, not as much push'ing and pop'ing. My other classes are going to be interesting. I always do well in math, but I'm worried a little about my paper classes, Ethics and Western Civ. I'm shooting to make a 4.0 this semester, but it's these non-major related classes that seem to kick my trash. Oh yeah, that and trying to work 40 hours a week too.

Project: Alright... now on to my pride and joy. My project that I've been working on for a good chunk of the summer. So anyway, earlier this year I was kicking around the idea of learning a bit about SS7. Well, at the beginning of the summer I started writing an SS7 stack. I started with ISUP, then realized that I should start with the bottom layers first, and began with the driver layer. I figured out how the framer works on the TE410P/TE405P and wrote an interface to send/receive data to it. It does the HDLC portion and the CRC checksum at the end of each SU for me. After that, I started studying MTP2 and wrote the MTP2 layer. I have finished a relatively simple implementation of MTP3 (VERY simple) and am moving back to ISUP. My goal was to have a call passing by the end of the summer but I seem to have fallen short on that. Well, I've at least gotten a significant chunk of it done. I hope to be able to put some more time into this between work, school, and climbing on the weekends to knock out a little bit more progress on it. I must admit, I wasn't sure in the beginning if I would have made it this far. In fact, if I would have known how much work it would be back then, I don't know if I would have taken it on, but I've gotten so far now that it's impossible to turn back :-) It's been a pretty good learning experience for me though. It will also be a big benefit to those in the Asterisk community that want to see an open source SS7 solution. It still has a bit to go (I haven't done any live testing yet) but I think that it has passed the point of no return already. I need to buckle down and spend some time on this ISUP stuff again. It's just such a pain to read the standards docs on this stuff. They're so dry. Maybe one of the SS7 books that I have will have a better way to present it. Anyways, it's late. I need to go. Hope anybody reading this enjoyed it :-) Cya!

Finally fixed the MWI speed on Q.SIG. Apparently I was waiting for the other end to send a RELEASE message after the NCAS connection was started and I should have been sending the RELEASE. So I changed it, and it worked. Nasty little problem, I didn't even think that it would have anything to do with the message order.

Other than that, I have been of late working on writing some software that tunes the impedance setting on the SI3020 analog line part. It's been interesting learning about how to do data analysis on the line to find out in the application which setting is actually the best. If anybody has any experience in this, hit me up :-)

I've also started looking into what it would take to write an SS7 stack for Asterisk. SS7 is the de facto signaling standard for the telecommunications backbones of the world and apparently a lot of people are interested in getting native SS7 support into Asterisk. It's funny how similar (functionally) SS7 is to the internet and it's major protocol, TCP/IP. I can see why there's a lot of effort put forth to moving the lower layers of the SS7 protocol suite to TCP/IP.

Still hacking a way on MWI for Q.SIG. For some reason it's not letting me turn on/off the light at an interval quicker than ~35 seconds. It's funny, because I've been through the traces for the call, and byte-for-byte our setup message is the same as the one on a working MWI transaction. It's beginning to drive me nuts trying to identify the problem. It doesn't help very much either that the switch that I'm working against is 3000 miles away. I wonder if something's wrong in it's configuration or something. At least some how getting more information would help. Maybe I need to go out there to find out what's going on with it.

I seem to always wait a long time between updates, no? :-) For all of you out there that wondered, I'm still alive. I'm still working at Digium, doing development on Asterisk/libpri/zaptel. Of late, I've mostly been doing developement on libpri - the opensource PRI/PRA stack that Mark wrote. It's fairly comprehensive with basic PRI features, but a lot of the more intricate and advanced features (2 bchannel transfer, Calling name over facility, etc) have been missing due to the different format in which they are sent. Instead of them being encoded in some binary-flagged information element, they use a special information element that is used for transport of generic information called a facility information element. So anyway, I got a lot of that done, and now am working to merge it back into the standard libpri tree.

I guess my latest (new) project has been writing a program that does analysis on a telephone line for echo and auto-tuning of a line interface based on the analysis data received on the line. It's on a FXO line interface card and it uses one of the Silicon labs chips for talking to the line. At first I was working on just tuning the onboard echo canceller coefficients but I learned that I should be doing tuning of AC impedance first and worry about the echo canceller later. Now I just need to test it some more.

Wow, I haven't posted for a LONG time. Well, I took a 2 year sabbatical (in a manner of speaking) and forgot how to use a computer. I basically didn't touch a PC/The 'net for two years. I'm back now, working back again for Digium (former Linux Support Services) and crankin out code. It was weird, I had to basically relearn how to use Linux again when I got back, but Mark still wanted me to work here. Let's see, what have I been doing lately...

A lot of work on libpri/Asterisk. I've working on adding QSIG features to the libpri stack. The hardest part about it was figuring out how to read the standards documents. Oh yeah, and turning my brain into an ASN.1 encoder/decoder. :-) I was trying to avoid that the whole time but it was in vain. I have calling name (receiving) done, also interpret the divertingleginformation2 argument type. I'm going to do MWI stuff next. I'm also looking into getting TBCT (Two B-channel Transfer) working, as well as the TR-08 signaling protocol (It's kind of like GR-303). Oh yeah, and trying to hang out with a girl that I like, and get decent grades in school. Phewww. I don't know what else to write, so this is it for now.

Hey everyone,

I recently took the jump and converted my work box over to devfs. In turn, I added devfs support into zaptel (a new high-end telephony interface for linux). Now if you register a zaptel device with the framework, device files will be dynamically created (if you're using devfs).

Today I'm working on getting this quad port usb card working with the linux usb-ohci driver. The card does not seem to act in a manner that the usb-ohci driver likes, and so I'm debugging it. A big problem is that the module author did not seem to do all the cleanup necessary upon failure of a device probe. Now I have to write cleanup code too. Ugh.

The cool thing about this card is that it has for root hub ports on it. That means that each port has 12Mbs available to it. And it's OHCI, and my on board VIA chipset is really crappy with USB. There's something messed up with it or the uhci drivers, and I don't know enough about uhci to do tuning according to chipset.

Finished first version of ALSA channel driver for Asterisk, it can be found on the CVS server. Woohoo! I think the only major problems that are left are fine tuning buffer sizes. Ugh....

hrm... Looks like I'm going to take over maintaining of Gnophone. It's a neat application that acts as a VoIP endpoint for Asterisk. It talks the IAX protocol, and has support for OSS and older 0.5.x ALSA soundcards, zaptel devices, and the quicknet products (phonejack, etc). It'll be interesting to see how things go with it. I think I'm going to write a simple IAX client that runs as a daemon in the background and drives a phone. Kind of a simple version of gnophone, or asterisk. I think now that I've got this alsa stuff down, I'll write a newer ALSA driver for it, for the pre-1.0 releases (that's the version of ALSA the new asterisk driver uses).

Ok, back to work...

Long time, no see...

Personal: Had a nice long christmas vacation. I ended up spending time with the family and going to Panama City. Had a great time there, we were able to swim in the ocean on Dec. 30th, which was quite amazing for me. Got a little bit of work done, but mostly relaxed. Ahh....

Work: Ok, getting back into the old grind for work and all. I was previously working on the Creative VoIP blaster, but the guy who's working on the Linux Telephony driver seems to be doing quite a good job on it and doesn't appear to need much help.

I'm kind of getting started with writing an ALSA channel driver for Asterisk, I think it's going to be pretty fun. ALSA is a really neat project.

Also, I think we're getting ready to manufacture our quad span T1 PCI card, so things have been getting kind of rushed around here. Mark spent his holidays in Egypt, and managed to acquire a nasty bug while he was there. It's weird not having him around the office.

Hrm... what else. Oh. I just read this REALLY funny saga of a spammer (we're talking about literally rolling on the floor and laughing here) at this site. Good read.

Can't think of anything more right now, I guess I'll update later.

11 Dec 2001 (updated 8 Jan 2005 at 18:13 UTC) »

Wow, haven't posted in a while. Well, here goes...

Got the little USB phone completely working now, incredibly convenient device. Now I get to re-write the driver so it scales better to more varied devices based on the tigerjet USB chipset.

Tigerjet is now supposed to send me another phone unit with a buzzer to use as a ringer. Should be relatively easy to implement.

Oh yeah, new toy. Now I get to work on drivers for the little Creative VoIP Blaster ( I think). It's a pretty amazing little device, and will be interesting getting it working considering I don't have any REAL documentation on it. It has one major flaw: it uses G.723.1 as it's native VoIP codec. This is a codec that is covered under software patents, so that REALLY sucks for us Open Source Software developers. I think I'll just extend my work off of one of the sourceforge projects so that I don't end up reinventing the wheel. The particular one I'm looking at doesn't appear to have (among other things) read and write support working. This will prove to be interesting...

Some links:

ok... getting distracted... I'll just end now

5 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!