Domain: uclibc.org
Stories and comments across the archive that link to uclibc.org.
Comments · 47
-
Re:Good for embedded systems
I have to say, I've made pretty damn small minimal installs using buildroot.
-
Re:Minix
Linux can be configured to run in 2MB of RAM and 2MB of flash or less. It can run in 4MB RAM with a full network stack, busybox, and several hundred K remaining for apps.
There is no other full featured free unix like kernel which can do that. Certainly none of the free BSDs.
I'll take the bait. Care to show a reference to running a modern Linux kernel w/ 2 MB RAM, or 4 MB RAM with busybox, on i386 or ARM? Busybox can do wonders for storage requirements (e.g. for NAND FLASH), but it doesn't help with RAM at all! I found 8 MB to be difficult enough (!), last I tried ulibc and busybox on i386.
Just as a point of discussion, generic NetBSD is smaller than generic Linux (e.g. Debian) on the ARM platforms I've been using. A line from top shows the latest (NetBSD 5.1.2) kernel RAM footprint on ARM9: about 1.2 MB, with numerous filesystems, NFS, networking, USB support, etc. built in. This includes all kernel modules.
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
0 root 125 0 0K 1240K schedule 0:00 0.00% 0.00% [system]Running 1 instance of httpd, sshd, and two user processes, minus 1.5 MB of buffers/cache, it's using 5.5 MB of RAM right now. Tightened up, it might boot in 4 MB but I haven't tried. Do note that this is with the standard (Net)BSD libc, all completely generic, 'out-of-the-box'.
Amazing work has been done to cram Linux into small places, but I think it's somewhat disingenuous to say that no BSD is close. I'd say NetBSD provides a rather interesting starting point.
-
Re:Busybox-based linux
I will second both points of this. Using buildroot for multiple types of boards/chips. buildroot helps in creating a reproducible toolchain, kernel, apps, and filesystem images. You can add your own application (The main thing to run) as a custom package.
http://buildroot.uclibc.org/The Atmel at91sam9 series runs fine. Both in graphical and non-graphical environment. I use this for quick proto type testing/dev:
http://www.mini-box.com/pico-SAM9G45-X
(however, I add NAND Flash for os/apps)As others have stated, Angstrom is also good for building the OS/applications. The build system takes a little bit more care to setup than buildroot.
http://www.angstrom-distribution.org/ -
Use buildroot.
If your machine can boot from a SD card, you can build a bootable linux system
well under 2GB, including qt and multimedia, using this project:I have already used it for a mini2440 with 64Mbytes of ram and a Smagung
S3C2440 micrcontroller with a 926T arm core. Buildroot is self contained
and lets you configure everything from the kernel up to the applications
you want in your system. It is conceived precisely for those small systems with
small amounts of ram and a framebuffer instead of a graphics processor.
Usefull for other architectures like mips, powerpc, i386, avr32, etc. -
Thanks!
Nice to see someone actually caring about removing bloat from software after VB, Java,
.NET and the
corporate culture behind them literally destroyed any incentive in producing optimized code, nearly
killing the demand for skilled programmers capable of writing such code.Also, for those working with smaller systems this is a godsend.
-
Re:Distribute glibc then ...
It's been done before, depends what you need from the library : http://www.fefe.de/dietlibc/, http://www.uclibc.org/, etc (but these are clearly targetted at embedded systems).
That being said, dependency hell is the main reason Linux cannot get ahead of Windows or Mac for the masses - the abstraction layer may not be as optimisable as on Linux, but you can distribute small binaries and be _sure_ they work out of the box with no issues.
-
glibc and embedded
I have done a few embedded systems using the Linux and uClinux Kernel. A couple of things to note:
Embedded tends to avoid glibc in favor of uClibc (www.uclibc.org). It is not full featured but it is a lot smaller.
When selecting a version of GCC and kernel, look at who has already has a running system for your board. You probably don't want to go through the effort to get gcc-4.2.x cross compiling and building your system if somebody already has 4.1.x doing the job.
I would take a look at buildroot http://buildroot.uclibc.org/ and see what options they have out of the box. As an engineer it is easy to want to pick the newest, most feature full version, least bugs version available and call it the "best". Remember though that one of the features is the cost and time to get it running. Your boss will not be impressed if you spend two weeks getting the newest kernel running on the board because it has fixes to sub-systems you don't use; when you could have used older kernel and had it running in an hour.
Also, keep in mind with this board, Ram and Flash cost money. If you are building a large number, the smaller kernel and flash disk are better from the cost/unit. If you are building a small number, the cost to cut you image down in size probably is not worth it.
-
glibc and embedded
I have done a few embedded systems using the Linux and uClinux Kernel. A couple of things to note:
Embedded tends to avoid glibc in favor of uClibc (www.uclibc.org). It is not full featured but it is a lot smaller.
When selecting a version of GCC and kernel, look at who has already has a running system for your board. You probably don't want to go through the effort to get gcc-4.2.x cross compiling and building your system if somebody already has 4.1.x doing the job.
I would take a look at buildroot http://buildroot.uclibc.org/ and see what options they have out of the box. As an engineer it is easy to want to pick the newest, most feature full version, least bugs version available and call it the "best". Remember though that one of the features is the cost and time to get it running. Your boss will not be impressed if you spend two weeks getting the newest kernel running on the board because it has fixes to sub-systems you don't use; when you could have used older kernel and had it running in an hour.
Also, keep in mind with this board, Ram and Flash cost money. If you are building a large number, the smaller kernel and flash disk are better from the cost/unit. If you are building a small number, the cost to cut you image down in size probably is not worth it.
-
Re:It's just PClinuxOS
-
Re:Static iostream size?
have you figured out how to compile a program (even Hello World) and statically link it against a Free implementation of the C++ standard library so that the executable is smaller than 200 KiB?
That would be uClibc++. No locales, but most other parts of c++. According to the webpage the library is about 76kb in an optimised build. -
Re:Size of iostream?How about: uclibc? Thank you for the pointer. I assume, you use the embedded c-library newlib in the kit as C-library. Yes, devkitARM uses newlib. Would uClibc++ also run on top of MSVCRT (for use with MinGW)?
-
Re:Size of iostream?
How about: uclibc? ~100K for the whole library. I assume, you use the embedded c-library newlib in the kit as C-library. So a comparison to an embedded c++ library would be appropriate.
G++-iostream is optimised for performance on standard computers and includes support for locales. Hardly something, which I'd expect to perform well in a space constrained environment. -
Re:HW recommendations?
I recommend Gumstix for beginners.
It uses U-Boot and the whole uClibc BusyBox Buildroot stack for development.
It is rather slick to work with. They even added support for the rt patch not too long ago which was a big bonus for me.
I've been working with it for about a year now and I have to say it's really the best solution for embedded Linux beginners. -
Re:HW recommendations?
I recommend Gumstix for beginners.
It uses U-Boot and the whole uClibc BusyBox Buildroot stack for development.
It is rather slick to work with. They even added support for the rt patch not too long ago which was a big bonus for me.
I've been working with it for about a year now and I have to say it's really the best solution for embedded Linux beginners. -
Re:Answers
On point 2, you're incorrect. There is no LGPL 3 and you're interpretation doesn't match that of people creating libraries... see http://www.uclibc.org/FAQ.html#licensing for example. Your best bet would be to look through this list for a Linux compatible, BSD licenced library: http://www.uclibc.org/other_libs.html
-
Re:Answers
On point 2, you're incorrect. There is no LGPL 3 and you're interpretation doesn't match that of people creating libraries... see http://www.uclibc.org/FAQ.html#licensing for example. Your best bet would be to look through this list for a Linux compatible, BSD licenced library: http://www.uclibc.org/other_libs.html
-
Re:Well
On an embedded system, you probably don't need anything running but the kernel, udev, and your application. You don't need most of your libraries; it's going to be more efficient to statically link everything. You don't need bash. You don't need Python. You don't need a package manager.
You don't *technically* need anything else, but for development it can be IMMENSELY useful to have a shell and a base set of utils. Busybox will get you everything you need in a multicall binary under 1MB (dynamically linked to glibc).
Things can be even smaller using uclibc instead of glibc, but unless you are building an EXTREMELY low end embedded device and can't spare an extra 1-2MB or so (or 1/2 that with a compressed filesystem like cramfs) it may not be worth the extra hassle trying to build a uclibc toolchain (and potentially deal with uclibc issues with other utils/libs you may use).
Anyway, the nice thing about Busybox is that you port a single package and get huge range of utils. Overall I agree 100% with a previous poster who said the key to rolling your own OS is getting the toolchain working - once you have that, porting is relatively easy (I'm assuming we're talking about non-x86 embedded systems here... with x86 it becomes easier still, as the vast majority of open source development is done on that architecture). -
Some ponderings to think about
You might want to check out BuildRoot. It's what Gumstix uses for their distributions and it works pretty well.
They have even has the rt patch from Ingo Molnar merged into their standard distribution. Sounds like a Gumstix might
not be a bad way to go now that I think about it. And then you would have some pretty good community support. My $.02 ... -
Re:I don't see how this is any turnaround
Start working for change then, including using uClibc instead of glibc and avoiding other bloat-ware. Projects are still stuck using many bloated GNU tools but there are in fact replacements for some.
-
Re:Linus is wrong
Linus could have chosen some other libc to link the kernel with (just as the person in your example could have chosen to live somewhere other than in the city).
I hate to rain on your parade, but Linux doesn't link with Glibc or any other libc; it's self-contained. People also regularly run Linux systems with other libcs on top, such as diet libc and uClibc. What is absolutely required to build Linux, AFAIK, is the GNU toolchain, including GCC and binutils. Howver, I'm quite certain that there's no way Linux could be considered a derivative work of any of the GNU tools, so their licenses don't have to be compatible. -
Re:Irony?
That may be because building an embedded product with Windows Embedded is just slightly above doing triple integrals in your head in terms of startup complexity. Microsoft's official procedure for creating a bootable CompactFlash card with an NTFS file system for Windows Embedded is to run a DOS utility. It must be run in DOS real mode, not a DOS box, which means you need a CF reader with an IDE interface, not a USB one. This was somewhat tough for us, since CF/IDE interfaces are sold by almost nobody these days. For that matter, we don't exactly have a copy of Windows 98 to dig up and install on a system.
The solution I came up with? Hook a USB flash reader up to a Fedora Core box, and use ntfstools to format it. Took all of fifteen seconds.
Unfortunately, we don't have the option of never working with Windows Embedded again, since we work with whatever our clients need us to... but I've developed three products that use embedded Linux (using Buildroot), and all three combined were easier to get off the ground than that Windows monstrosity. -
Re:I Can Hear It Now...
What Stallman calls GNU/Linux is what *some* Linux distributions distribute.
On the embedded side, there are more and more distro which are using replacements for the GNU tookchain and glibc like busybox and uClibc, thus avoiding many of the GNU tools you typically see in a Linux distro.
Stallman's generalization is mostly true, but not always true... -
I tried Soekris
I've been looking for small cheap headless computers for a long time, but they are hard to search. Want to use them as servers. Found Soekris, which does the job, but took a while to set up. Had to figure out how to net boot, cross compile, and work around various limitations. Meanwhile, the distro I used (uwoody from ucLibc) has vanished, so if I want to update, I'll have to start from scratch. Would prefer something easier to set up, and these don't sound like they are any easier. Still, glad to know about Waysmall and BlackDog. Anyone know of others?
-
Probably not GNU/Linux
I know this was a joke, but just to pretend I don't get the joke: Actually, on an embedded platform (at least one without a lot of storage), a Linux system is probably going to have very little GNU code. An embedded Linux system is likely to use BusyBox for basic Unix-compatible commands like ls and rm, and something like uClibc or dietlibc for its C library, and won't have things like Emacs or a compiler actually on the system. So it's unlikely to have much actual GNU-project code on it, if any.
-
Re:Wow!
Ummm... no. Linux, complete with userland, runs just fine on a 386 or embedded device. If you want to squeeze it down more, you can run a cut-down kernel and use a different userland (e.g. uClibc). It's very capable even then.
-
Re:So why is Gentoo the right choice for this?
One feature of uclibc is that it has many, many compilation switches, with the aim of minimising the size of the library. If gentoo can really figure out how to get all this compatible with their USE flags it would be great. But I would be surprised if they are there yet. For example, has anyone got ALSA to compile with gentoo embedded? I've tried and failed.
An alternative to gentoo is to use uclibc's own prebuilt Debian distro, their build-from-scratch buildroot system or their prebuilt root file system, all at the uclibc site. -
And now we are waiting for uclibc ver 1.0
uclibc is a tiny libc which fits BusyBox very well. A complete linux system (without kernel) can be built using less than 500kbyte with busybox and uclibc.
-
Re:Linux embedded integrators are lazy
-
Re:Too complex: time for microkernels?
It is a common mistake to think you have something faster just because you haven't yet designed in all you'll eventually need or want.
But it's also a mistake to think that all you'll eventually need or want needs to be designed in right now. It's also a mistake to put things at a more deeper layer than they need to be.
Sure the GNU libc is huge. But that's POSIX, and that's where the Hurd will bridge us from.
Funny, I'm pretty darned sure I've seen smaller implementations. Certainly, application compatibility for them isn't perfect -- but it's certainly Good Enough.
You yourself point out that the quick-and-dirty but real solution is often the one that wins in the market. Why, again, hasn't the HURD been kicked out the door with POSIX support only? -
Re:I believe that GPL is pretty clear on thisI suppose that might work if he was a copyright holder. The sveasoft firmware, like the Linksys firmware, is based on the Linux kernel, Busybox, uClibc, iptables, and several other projects. I am the maintainer of BusyBox and uClibc even I could not offer these projects under some alternative license since I have accepted many patches written by others. The Linux kernel is built up from millions of patches, all under the GPL. The iptables/netfilter code is licensed under the GPL, and is similarly composed of patches from many people. There is absolutely no chance anybody can ever offer any of these components under any alternative license. I think my BusyBox Licensing Page make it very clear what is expected of people that distribute my code, and more generally, for any GPL licensed code...
I am sorry if following the rules hurts sveasoft's business. Tough. Guess how much money I earn for every device sold based on my code? Zero. I see no reason why other's such as sveasoft should profit where the authors of the code earn nothing. Expecting to earn royalties off of what he received for free and has modified slightly is a poor business model.
-
uClibc rather than glibcglibc is huge - certainly much to big for embedded systems, which is where the real cutting edge is these days.
Instead, you guys should look at uClibc - a small, fast, and sleek implemention of glibc, that is finding its way into more and more devices every day.
We are talking about an order of magnitude smaller code footprint here people.
If you want the embedded world to jump on to this bandwagon - uClibc is the only way.
-
Re:buildroot busybox uclibc
[crap. had a less than that i didn't entityize correctly. apologies for screwed up parent post]
If you want to build your own using a prepackaged set of tools, I strongly suggest using buildroot.
My firewalls are all diskless boot machines (they pull their image from a server that's on a private network), so size *does* matter to me. Having the full development environment simply is not an option.
As others have pointed out, having gcc on your firewall isn't going to provide you with a great deal of security. Just another (and a tiny one, at that) hoop to jump through. If they can root your box, then they can upload a compiler (or, more likely, a precompiled binary).
I use buildroot to compile my system. I have to tweak the make scripts, but I can get openssh/iptables and a bootable system compiled in a <6MB image. (it can be made smaller, but I've got logging and other stuff on there).
I also have a modified version of gshield which generates a script that I can edit to use as my firewall.rc. (I don't actually use ghield as the firewall, just capture the commands that it would have executed to create the ruleset at runtime)
Best of luck.
-
Re:buildroot busybox uclibc
[crap. had a less than that i didn't entityize correctly. apologies for screwed up parent post]
If you want to build your own using a prepackaged set of tools, I strongly suggest using buildroot.
My firewalls are all diskless boot machines (they pull their image from a server that's on a private network), so size *does* matter to me. Having the full development environment simply is not an option.
As others have pointed out, having gcc on your firewall isn't going to provide you with a great deal of security. Just another (and a tiny one, at that) hoop to jump through. If they can root your box, then they can upload a compiler (or, more likely, a precompiled binary).
I use buildroot to compile my system. I have to tweak the make scripts, but I can get openssh/iptables and a bootable system compiled in a <6MB image. (it can be made smaller, but I've got logging and other stuff on there).
I also have a modified version of gshield which generates a script that I can edit to use as my firewall.rc. (I don't actually use ghield as the firewall, just capture the commands that it would have executed to create the ruleset at runtime)
Best of luck.
-
buildroot busybox uclibc
If you want to build your own using a prepackaged set of tools, I strongly suggest using buildroot.
My firewalls are all diskless boot machines (they pull their image from a server that's on a private network), so size *does* matter to me. Having the full development environment simply is not an option.
As others have pointed out, having gcc on your firewall isn't going to provide you with a great deal of security. Just another (and a tiny one, at that) hoop to jump through. If they can root your box, then they can upload a compiler (or, more likely, a precompiled binary).
I use buildroot to compile my system. I have to tweak the make scripts, but I can get openssh/iptables and a bootable system compiled in a gshield which generates a script that I can edit to use as my firewall.rc. (I don't actually use ghield as the firewall, just capture the commands that it would have executed to create the ruleset at runtime)
Best of luck. -
buildroot busybox uclibc
If you want to build your own using a prepackaged set of tools, I strongly suggest using buildroot.
My firewalls are all diskless boot machines (they pull their image from a server that's on a private network), so size *does* matter to me. Having the full development environment simply is not an option.
As others have pointed out, having gcc on your firewall isn't going to provide you with a great deal of security. Just another (and a tiny one, at that) hoop to jump through. If they can root your box, then they can upload a compiler (or, more likely, a precompiled binary).
I use buildroot to compile my system. I have to tweak the make scripts, but I can get openssh/iptables and a bootable system compiled in a gshield which generates a script that I can edit to use as my firewall.rc. (I don't actually use ghield as the firewall, just capture the commands that it would have executed to create the ruleset at runtime)
Best of luck. -
Re:Stallman declined to be interviewed ...
-
Re:Sort of...
"About the only common components you could 99% safely bank on would be Linux, Glibc..." uclibc and dietlibc are two alternatives to using glibc, both of which can be used as part of a Linux based operating system. I will agree that glibc is probably present on greater than 99% of systems using the Linux kernel.
-
LRP is dead! Long live LEAF!
LRP didn't just die. It evolved, or reincarnated. Linux Embedded Appliance Firewall (or LEAF) is the next step. Kernel 2.4 support, several ready distributions for different needs, packaging system, etc..
"LRP is dead" news is more like a bitter cry of an abandoned developer.. If he touts his "next version would've had all these magical abilities", why doesn't he release it? Even a partial implementation would probably attract attention and it could be integrated into other embedded projects.
Linux-on-a-floppy idea is generally just an issue of picking the right components and wrapping it up. I taught a linux-trainee to make an iptables-floppy in one night, just by cut-pasteing parts of a running debian system and compiling a custom kernel.
I'd say that the linux-floppy-culture owns most credit to uClibc and Busybox developers, for making embedded-sized libc and utilities.
-
Re:Slackware?
I've found slackware tends to be nice to slower hardware. Slack 3.0, for example, is running quite briskly on my 386 now that I upgraded from 3 to 7 Megs of RAM. Plus, I could fit lots of development tools and a minimalist X in 80 megs of HD and 17 megs of swap.
Slackware still runs on relatively modest hardware, but it's not exactly set up for kids. It's the most unixy of the major Linux distros, aimed more towards experienced unix users.
On one hand, there are several distros that aim towards users new to Linux, but they generally use KDE or Gnome, requiring a relatively new computer with lots of hard-drive space and RAM. On the other hand, there are also several mini-distros for use on rescue floppies, older computers, or embedded systems. Unfortunately, many of them have the same problem as Slackware--they're for experts--or they have no GUI at all.
The ideal solution would be to build a distro customized for the program in question. Since it's being run by a university CS department, I assume they're more than capable of this. They could use one of the mini-distros as a starting point, then set-up a window manager and software kids would be likely to use. There's a good list of educational software at SchoolForge.
Of course, thanks to glibc, such things are now very tough. But, don't forget, slack used to use BSD libc (which is small and fast!), and guess what still uses it? that's right, *BSD. So if you'll consider more than just linux, don't be afraid to look at NetBSD (which is a little smaller and lighter than FreeBSD.... not sure how OpenBSD compares).
Fortunately there's an easy solution to libc bloat. Clibc is a glibc replacement, implementing most of the features. According to the website they haven't found anything yet that won't compile against it.
There are suitable replacements for most other system software too (except for the kernel). BusyBox replaces most essential utilities. Ash is a Bourne compatible shell at a fraction of the size of Bash.
You might also want to test-run Knoppix, since it doesn't even need to be installed (so it can't hurt!).
Running Knoppix with less than 128 MB of RAM is painful enough. It would be even slower on a P100.
For window managers, OpenLook VWM, FVWM, Blackbox (probably the best), or mwm. Please don't force them to use twm... they'll never want to look at a computer again!
There's definitely no shortage of window managers, even ones that are easy on resources. Personally, I like IceWM. -
Re:An amazing project.
I agree, with one caveat: efficient code can often be far less elegant than "normal" code. For example, there are plenty of goto statements in the Linux kernel. Using some of the more advanced features of C++ can have an efficiency impact, even if it does result in a simpler, more easily understood architecture.
Kind of forgot about this little issue: endless trade offs. Do you want to spend less time running the program or maintaining it? :-)
Yes, but the libraries can be improved or replaced independently of the applications. I believe there is a tiny libc floating around somewhere, for instance.
You are talking about this, I believe. :-)
Oh, and when I was referring to when I said that libraries can bloat an app, consider a configuration file format in xml. Although it may never need to support anything other than us-ascii, use of an xml parser library would include code for unicode support at the very least, when a custom-written parser would not. Hence the trade-off between a well-understood, mature library, and a new, efficient chunk of code specific to that application. This is the kind of thing that would result in different choices for embedded vs desktop constraints.
*nod* I guess I can honestly admit I would rather see developers use the big XML library when developing for general purpose systems. Primarily because the big library will serve many more applications than a fine-tuned specific one -- as more apps use a library, the total efficiency in the system goes up, even if there is a performance hit on a case-by-case basis. I think this makes my original point moot in a lot of ways. :-) -
Re:Quick question
> What is the weakest specced machine that anyone here is getting productive/useful work with Linux done on?
> Do people use Linux on 468s at 12mhz? P75s? Just curious.
Newer distros assume you have at least some hundred megabytes of disk space, a decent amount of memory and a relatively fast CPU.
To use old hardware efficiently you should look at projects like uClibc or Busybox that are intended for embedded/small devices.
-
Embedded/Small Systems
There are many efforts to putting Linux (and other UNIXes) in places with limited amounts of space.
handhelds.org is all about running Linux on ipaqs. Space is a concern, of course, so various things are done. The conversion to Busybox has recently been made, saving almost 2MB of space as I recall.
There's also uClibc. The smallest I've ever seen glibc is about 1.5-2MB. uClibc clocks in at about 200-700kB. That's small. This is used when you just don't have space available, such as on the TuxScreen with only 4MB of bootable flash and on many rescue disks and floppy based Linux systems.
Remember you don't want to cut corners all the time. On your desktop, it's probably best to run the full-blown GNU utilities. They have extra options that, while not commonly used, have obviously proven useful enough times to be included.
However, if you only have 16-64MB to work in, and you want to have lots of other stuff, busybox is a very viable option that I would reccomend if you have trouble fitting stuff in. Don't use it when you've got gigs of hard drive space to play with though. -
busybox + uClibc rule
-
Since linux devices gets /.'ed rather easily-by Rick Lehrbaum (April 12, 2002)
Back in November of 2000, Jim Thompson, Kem McClelland, Brad Martin, and Jamie Thompson started brainstorming about the idea creating a company to specialize on the emerging market for publicly accessible wireless access points. They reasoned that there would soon be a significant opportunity to supply devices to public access "hot-spot" providers, wireless ISP/infrastructure providers (WISPs), and various value added resellers (VARs).
Thompson and McClelland were both senior managers at WapPort, where they had both been frustrated by the inability to convince existing access point providers to modify their products for "hot-spot" features, or even to allow Wayport to have access to their source code so that Wayport could make the necessary modifications. So the two, joined by Brad Martin and Jamie Thompson, decided to have a go at it on their own.
"My original frustration when I was at Wayport, was that we couldn't get any of the existing access point manufacturers (Cisco, Lucent, Symbol, etc) to embed the features we needed to deploy an 802.11-based "Hot Spot" service," recalls Musenki CTO and founder Jim Thompson.
Roughly 18 months later, Austin, TX based Musenki ("musenki" means "small wireless gadget" in Japanese) is poised to ship beta units of its first product -- the M-1 wireless access point. The devices, which are scheduled to ship to customers next Monday (April 15, 2002), will be sent to developers, strategic technology partners, VARs who want to start integrating their own features, and some prospective major customers. Among the significant customer prospects being sent beta units are several regional wireless ISPs and mobile operators, according to McClelland.
McClelland describes Musenki as a developer of "secure, open-source wireless networking products" whose "software and high-performance equipment enable open development, bringing expandability and customization to the wireless LAN market." Indeed, the company's first device packs a lot of computing power in a very small space, by taking advantage of some of Motorola's highly integrated PowerPC-based system-on-chip processors running at speeds ranging from 200 to 400 MHz, along with high density RAM, built-in solid state disk (Flash memory), and internal expansion based on "miniPCI" modules. The use of built-in PCI expansion allows Musenki to configure its access points for a variety of wireless interfaces -- an important factor in an emerging technology-based market that has a long way to go before stabilizing.
According to McClelland, Musenki has incorporated several features into its wireless access points that are crucial to success in the public access market. These include tie-ins with external authentication and billing systems, roaming across various service provider networks, the ability to slot-in additional network-layer functionality such as VPN and protocol translation, and functions that enable the management of a large number of these devices disbursed over a large number of locations.
What's on the drawing board after the M-1 and M-3 wireless access points have made it into full production? According to McClelland, Musenki's plans include a number of technology and interface enhancements and upgrades, including . . .- Client side devices (miniPCI/PC cards, particularly GPRS/802.11 combo cards)
- Mesh networking technology
- Technology for enabling seamless roaming, by means of cellular and WLAN networks
- Additional security features
- Integration with innovative antenna technologies
- Expansion of the platform beyond the WLAN market
Building in power and flexibility
Jim Thompson characterizes Musenki's first product as a Linux-powered 802.11 access point: "Its open, so the customer can make it do what they want" So flexible, in fact that you could use it for other things. "Like a sexy small, high-performance router," according to Thompson. "Take the 802.11b NIC out and install one of several available miniPCI modules with crypto/compression chips, and now you've got a VPN router -- with compression -- that will run at 100Mbps."
Prototype of the M-1 access point
Here is a summary of the features of the embedded computers that are built into the M-1 and M-3 . . .
M-1 specs . . .- Processor: Motorola MPC8241 running at 200MHz
- RAM: 32MB (default), 64MB, or 128MB of SDRAM
- Flash: 8MB (default) or 16MB
- 1 x Davicom DM9102AF (tulip-clone) 10/100 Ethernet on RJ45
- 1 x miniPCI socket (comes filled with a 802.11b NIC and "AP" software)
- miniPCI socket has the pins for V.90 modem and 10/100 Ethernet brought out to a second RJ45
- 1 x Smart Card (SIM form-factor)
- I2C header
- 3.5 x 3.6 in. (smaller than PC/104 form-factor)
M-3 specs . . .- Processor: Motorola MPC8245 running 333MHz
- RAM: 1 x SODIMM socket, usable with up to 512MB (off-the-shelf modules)
- Flash: up to 32MB
- 2 x Davicom DM9102AF (tulip-clone) 10/100 Ethernet on RJ45s
- 2 x miniPCI socket
- first slot comes filled with a 802.11b NIC and "AP" software);
- first miniPCI socket has the pins for V.90 modem and 10/100 Ethernet brought out to a second RJ45
- first slot comes filled with a 802.11b NIC and "AP" software);
- 1 x full PCI slot (more Ethernet, T1, T3, additional 802.11a/b/g NIC, etc.)
- 1 x Smart Card (SIM form-factor)
- I2C header
- Size: 6.0 x 7.0 in.
Closeup of the M-1's internal single-board computer
"We feel that the additional CPU and the large memory resources are going to be more and more important as 802.11x (x = a, b, g) becomes the predominant method of client connectivity," points out Thompson. "In addition, as other 802.11 standards mature -- for example 802.11e Quality of Service, 802.11i security, 802.11f Inter Access Point Protocol, 802.11h Dynamic Frequency Selection (DFS), and Transmit Power Control (TPC) -- we will have the CPU power and architecture to allow us to incorporate these improvements, as well as the future increased bit-rates planned for 802.11a."
"Also, the minute you start thinking about 'mesh' routing, you need lots of memory and CPU resources," Thompson adds. "Consider a medium-sized city with 40,000 houses, all connected to each other via a wireless 'fabric' at 20Mbps or more."
"One could run an 802.11b (or 802.11g) NIC in one slot and an 802.11a NIC in the second slot and have a 'dual-mode' AP, with all the gateway features still enabled," explains Thompson. "Or you could use all three slots -- one slot of 802.11b for older clients, one slot of 802.11g for those clients, and one slot 802.11a. Or you could cover a coffee shop with 802.11b/802.11a and still bring a DSL, Cable, or T1 connection or even 802.11 'back-haul' out with one box, AND run the 'captive portal' on the same box."
Thompson explains that there are varied reasons for the Smart Card. "One of the most interesting is that if you're going to deploy this type of equipment into 'public access' venues, you need a way to both secure the contents against prying eyes -- and people who will dredge through your Flash -- as well as being able to potentially authenticate the equipment back to your billing system, if you're Wayport, Surf-n-Sip, VoiceStream/Mobilestar, Boingo, etc. We use the smart card for both of these, and more. Consider the use of Smart Cards in GSM phone or DBS satellite systems, and then apply same ideas here."
Embedded Linux inside
Musenki's wireless access points run a recent version of the Linux kernel (currently 2.4.18), along with other open source software.
"For Linux, we started with the PowerPC kernel sources from BitKeeper," says Thompson. For the bootloader, for example, they started with ppcboot sources and added 8245 support. "We've given all the code back to the community. Interestingly, I ended up supporting the 'Sandpoint8245' platform in the process."
"We did it all ourselves, with more than a bit of 'help' from the associated mailing lists," continues Thompson. "Linux mostly just 'runs', other than small bits of effort to get the on-chip serial ports working, and board-specific issues."
Why Linux?
"We see open source software as our greatest strategic advantage," says McClelland.
"Essentially, Linux lets us do what we want to do, because we have source -- stand on the shoulders of giants, and not pay royalties to Wind River," Thompson adds.
The development process wasn't without its "bumps in the road", explains Thompson. For example, the time he discovered that the Flash memory bus was wired backwards on the 'BBWISP' board. "This is one of the places where 'open source' ruled for us, because I just hacked support in for changing the 'endianess' of the Flash bus to an existing driver for the Flash chip we're using," he adds.
Thompson claims it took him about half a day to solve the Flash bus problem, thanks to the availability of Linux source code. "I can't imagine having to do that on VxWorks," he says.
According to Thompson, the following open source projects were valuable to Musenki in the development of its wireless access point products . . .- PPCBoot
- PowerPC Linux kernel
- Busybox
- hostap
- uClibc (A glibc2 environment is also available)
- M.U.S.C.L.E (Movement for the Use of Smart Cards in a Linux Environment)
- open1x.org
How will they cost, and how will they be sold?
Quantity one pricing for the M-1 (including 802.11b NIC, antenna, power supply, etc) will be $300, and the M-3 (similarly configured) will be $500, with quantity discounts available.
Beta units of the M-1 will go out on Monday, April 15th. Beta shipments of the M-3 are planned by the beginning of May. General availability of both should be by the end of June.
Initially, the units are being sold directly by Musenki, but the company is currently developing various sales channel relationships.
What's next for Musenki?
Musenki is currently staffed by six people (four founders plus a hardware and software engineer), along with consultants and part-time employees who have contributed to the open source, open architecture approach. Musenki is self-funded to date and is actively discussing additional financing with outside investors. - Client side devices (miniPCI/PC cards, particularly GPRS/802.11 combo cards)
-
Re:Lineo is behind the power curve
Another issue, is the poor way that Lineo participated in the open source community. Taking, but not giving back. MontaVista is a better example of an embeded linux company that understands the importance of open source community membership and fiscal responsibility.
I think this is unfair. Lineo were behind Busybox and uClibc, both under GPL. Erik Andersen is the maintainer of these and he was employed by Lineo until being laid off a few months ago.
john
-
Embedded Linux in five easy steps...
-
Re:AdviceI would take a look at using uClibc a C library for embedded Linux systems. (they are currently working on pthread support in the cvs which is supposedly what is keeping it from being used to compile mozilla/galeon)
BusyBox for basic embedded versions of common linux apps (e.g. init, cp, sed, etc.)
KDrive a tiny X server from XFree86
Galeon for a fairly small browser (there are some other smaller ones in development (for example Skipstone and Dillo)
What I would do is compile a stripped down kernel, use busybox for most system apps, and have your init scripts call the tinyX server and then instead of using a window manager have the startx script start galeon in full screen mode using tabs instead of separate windows for popups. The only difficult part may be getting mozilla or galeon compiled because of the gtk requirements) You could try the Xlib mozilla port perhaps.
For a little bit of info on how I have done a similar project take a look at my linux on a floppy page.