Open source

Recently I built and set up a new ClearOS machine. ClearOS is an open-sourced router and server distro based on CentOS, the free version of Red Hat Linux.

The machine is based on an Intel Atom 330 (dual-core 1.6Ghz) with 2Gb of DDR2 800Mhz RAM. It has one onboard Realtek 8168B PCIe gigabit ethernet controller (LAN side) and I have installed a VIA Rhine II 100Mbit PCI network card (PPPoE/WAN side). I have also installed a Marvell 88SE9123 PCIe SATA 6.0 Gb/s SATA controller and a Silicon Image SiI 3114 3Gb/s SATA controller for extra hard disks. The Marvell chip on the former card is the same one installed on many new motherboards which boast SATA3 support, and will be until Intel, AMD, VIA et. al. start incorporating SATA3 controllers into their chipsets, so it is already well supported and will be for some time. It is only a 2-port card but that is perfect for RAID0 or RAID1 configuration, not that I am using the fakeraid hardware controller on board.

So far the system has had several teething problems. I am using a standard Billion 7300 modem/router as a simple ADSL2+ bridge, with the ClearOS box performing PPPoE negotiation and all routing (NAT) duties. I have left my previous modem/router, a Billion 7404VGPX configured and connected to the LAN on standby duty in case I have problems with ClearOS, which I have. All I need to do is move the phone line from the Billion 7300 to the 7404 and re-enable the DHCP server on the 7404 to revert to the old setup.

The ClearOS installation procedure is fairly straightfoward although it is somewhat limited by the fact that you must install from USB or CDROM if you are setting up ClearOS in Gateway mode like I have done. You cannot do an install from the internet unless you are running standalone mode. This doesn’t really make sense to me, surely it wouldn’t be hard to specify temporary network settings during the installation procedure to gain access to the internet?

Some of the problems I have had so far with ClearOS:

  • Hard locks (hardware problems): the Sil 3114 card has caused some hard system locks while accessing attached disks. Considering this card has been in use for the last 3-4 years in an older fileserver with four disks attached (it now only has two), this is either indicative of the card reaching its end of life, a problem with its physical installation or some incompatibility between this and the motherboard. The latter is highly unlikely, but the former are possible. That said, it has been working well for the entire time in a well-ventilated case and is essentially ‘good as new’, so who really knows? I have reseated the card in the PCI slot and so far the system has been operating for 25 hours straight. Still early days, but previously it’d only worked for less than that before problems arose.
  • Soft locks (software problems): I have managed to lock the system two or three times by clicking around the web control panel. It seems as though running certain reports causes catastrophic failures somewhere, so much so that it ceases function as a router and does not even respond to SSH any longer, requiring a hard reset. This has not happened since I reseated the Sil 3114 card though, so maybe that was at play here.
  • Random service failures: the web configuration sometimes dies and comes back. Usually after performing a CPU-intensive task, like listing the currently open connections or generating a report.
  • PPPoE: doesn’t seem to receive DNS server address information from the ISP. Or if it does, it doesn’t redistribute this information via DHCP automatically. I’ve had to manually input the preferred DNS servers into the DHCP client.
  • ClearOS doesn’t support transparent web proxying AND QoS bandwidth allocation. This is a well-discussed problem with ClearOS, apparently the developers think the problem is too hard to solve without more money. However, other freely-available Linux-based routers can do transparent web proxying and QoS bandwidth allocation. Guess it wasn’t too hard for them…
  • Also doesn’t provide NFS services out of the box.

Aside from it crashing a few times (which is looking more and more like it was my fault), the system has been pretty good. It has most of the features anyone would need as an SMB or advanced home server.

Routing and WAN performance with routing and such is excellent. Pings to local gaming servers seem to be slightly reduced by 20-30 milliseconds. The web proxying cache seems to have sped things up a little bit, though with most of the content I access being hosted locally in Australia the speed is already there, it’s more to do with saving bandwidth on not re-downloading the same content all the time.

I still can’t figure out what the deal with network fileserving is. The CPU load while transferring files at gigabit speeds are around 80-90%; I guess this is owing to the fact that I am using an mdadm Linux software RAID0? Samba to Windows Vista only yeilds about 30Mb/sec; though FTP is 80-120 Mb/sec (given this high number is impossible, I am doubting the accuracy of these numbers). iperf between systems is about 850Mbit though so I know the network isn’t the problem. It will require further troubleshooting methinks.

I have a birthday party coming up and it’s a milestone year. Appropriately, I’ve invited some people around to my place and – all going to plan – it’ll be a good party. I have put a bit of thought and effort into the entertainment which will be available; mainly in the form of music. I have some large floor-standing speakers (an idea; photo taken during construction), an appropriately powerful amplifier to drive them, and a large collection of high quality music. What else can be done?

Well, there’s the obvious things: lighting and ambience. I’ll be making use of several sets of disco lights: of what type I am as yet unsure, but I imagine they’ll be standard fare. At any rate, that kind of stuff is either simple (random) or complex (programmable); unfortunately I don’t have the equipment or the time to deal with the latter, so the former will have to do. As for ambience, I am also going to have a smoke machine running and probably set up a light-sensitive plasma ball as well.

Then, there are the not so obvious things: video and visualisations. Fortunately in this day and age of high-def YouTube, it is sometimes quite easy to obtain good quality music videos. I have a few and I’ll be putting them to good use, but being able to do so was a small effort in itself (which I’ll get to later). Visualisations are basically mathematic representations or interpretations of the music being played. You’ve probably seen one before, there are some basic ones that come with most media players. Most times you will probably see bars moving up and down or a wiggly-wavy line, these are very simple forms; then there are more elaborate interpretations such as projectM, some of which can produce quite stunning and interesting imagery.

My plan was to make use of projectM in conjunction with my home theatre PC. This would provide an excellent central place to display the visualisations and obviously as my home theatre speakers are already connected, it just makes sense. But what else? Normally in clubs and such (The Met is a great example), they have multiple screens set up doing this kind of thing … how could I do that too? Turns out, pretty easily. PulseAudio is an awesome piece of software for just this purpose. With the click of a few settings I was able to setup my HTPC as a multicasting audio server with my desktop and laptop computers receiving the multicast; now, with projectM running on all three systems, I am able to have an easy to organise multi-screen system which makes use of existing network cabling in my home. The projectM instances on each computer won’t be synchronised (unless I specify a list of presets, but there are literally thousands – maybe I will, but probably not), but I think that’s fine. If they’re all displaying different imagery it just adds to the experience in my opinion.

As for music videos, that was a little more difficult to figure out because I wasn’t aware if it was possible to do what I wanted. There were no media players that support projectM and video playback at the same time; and technically, there still isn’t, but I was able to use qmmp to achieve what I wanted. qmmp allows me to add audio and video files into the same playlist. When qmmp reaches a video title in the playlist it simply launches mplayer to handle the file. mplayer is a handy video utility: it plays pretty much everything and it’s also highly configurable; not having its own graphical front-end makes this a requirement. It was a pretty simple process of reading the mplayer man page, adding a few options to its configuration file and having it behave exactly how I want: on the HTPC television screen, projectM will be fullscreen until a movie is played, whereupon a fullscreen mplayer is launched over the top of the projectM display to play the video file which then automatically exits at the conclusion of the video, at which point the next song plays and the projectM visualisation is once again visible. Neat, huh?

So, I was able to configure qmmp, PulseAudio, projectM and mplayer in such a way that I can remotely control (via vnc, but other options seem viable) the music and video playback for my party. I’m happy!

Setting up PulseAudio on Mythtbuntu 9.10 is really quite easy.
sudo apt-get install pulseaudio
All of the GUI tools should be installed along with it, but if they aren’t, pop this into your console:
sudo apt-get install pavumeter paman padevchooser paprefs
padevchooser is being deprecated, but it will be supported at least until Mythbuntu 11.04. The first thing you’ll want to do is launch padevchooser which will put an icon in your tray. From here, you can control all aspects of PulseAudio.

  1. Left-click the icon and select ‘Preferences’; click the checkbox next to ‘Start applet on session login’ and close the dialogue.
  2. Next, left-click the icon and select ‘Configure local sound server’; click the ‘Network Server’ tab and check the boxes next to ‘Enable network access to local sound devices’ and then ‘Don’t require authentication’. This allows applications to stream audio data direct to PulseAudio instead of through PulseAudio’s implementation of the ALSA API. This is necessary for all applications that support talking directly to PulseAudio.

Next, you’ll want to open the Volume Control from the tray icon menu and select your output device on the Configuration tab. PulseAudio should have enumerated all of the available combinations on your system, so choose the option you want. If you’re using optical output to your A/V receiver or television, choose digital, SPDIF or IEC958.

Setting up mpd for use with PulseAudio is straightforward. Open your /etc/mpd.conf file and comment out all the configuration related to alsa, then scroll down a bit and you should see a commented-out section related to PulseAudio. Make your config look like the below, and restart mpd.

# An example of an ALSA output:
#
#audio_output {
# type "alsa"
# name "My ALSA Device"
# device "hw:0,1" # optional
# format "44100:16:2" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
#}
audio_output {
type "pulse"
name "My Pulse Output"
# server "remote_server" # optional
# sink "remote_server_sink" # optional
}

Next, you’ll need to setup MythTV. This is pretty straightforward, all I did was go through the General settings to the audio options menu and set the following options:

Update! MythTV trunk supports PulseAudio, so all you need to do is select ‘PulseAudio:default’ as the audio output device.

  • Output:ALSA:plughw:0,1 (0,1 being the card id, device id key, obtainable through the command ‘aplay -l’; you may have something different in your setup but you can freely edit this text field for the correct device)
  • Passthrough output device: Default
  • Max audio channels: Stereo
  • Upmix: passive
  • Enable AC3 to SPDIF passthrough: no (force AC3 decoding by MythTV if your receiver can’t do it)
  • Enable DTS to SPDIF passthrough: yes (pass Dolby/DTS to your receiver, for DVDs)

And that’s it! All done. You should now have mpd and MythTV routable through PulseAudio which allows you to make use of the excellent projectM audio visualisation suite (basically an implementation of Milkdrop in OpenGL for Linux). Excellent for parties!

A note: This does actually output PCM 44.1Khz correctly. I was previously routing my audio through HDMI cable to the television, then from the television to the receiver. The TV was outputing a 48Khz signal; direct from the computer via optical, it’s a sweet 44.1Khz. Nice!

My uncles very old computer is starting to show signs of age, so it was decided that it needed to be replaced or repaired. Unfortunately the problem lay with the hard drive encountering many errors. I wagered that it would be the drive or the IDE controller on the motherboard itself, but unfortunately I don’t have the time to determine which.

So, it was decided that the cheapest option would be the best option: enter the Asus eeeBox. The B202 version can be had for only $299 AUD from select stores in Australia. Let me tell you now that this is a ridiculous price.

The system came packaged in good quality cardboard with nice graphics on it. The package included a keyboard and 3-button scroll mouse, a standard dipole aerial for the wireless adaptor, a DVI->VGA adapter for the DVI-only output, and a mounting bracket so the system could be mounted to the back of an LCD (or even to any mountable smooth surface).

The build quality of the system itself is quite good. It feels solid and well-built. The plastics used are mid-range in quality, and should last a while. My only gripe with the design of the unit is the small door on the front which I imagine could be easily accidentally broken off. This doesn’t really matter as it does not affect the functionality at all, but aesthetically the door makes the system look very tidy.

And I haven’t even talked about the hardware specs yet! The B202 version of the eeeBox comes with an Intel Atom 1.6Ghz CPU, 1024Mb of DDRII memory at 533Mhz, an 80GB 5400RPM SATAII hard disk, Gigabit ethernet, 802.11b/g wireless, four USB ports, DVI-out, and an SD/MMC card reader built in. Did I mention the ongoing benefits? It draws maxium of about 20W. A standard light bulb draws 60W. Yeah, this computer system costs less to run than a lightbulb does.

All for, once again: $299 AUD. Impressive.

I jimmy’d myself up a USB installation media and once I figured out how to change the boot order in the BIOS (I’m a man! I don’t read manauls!) it booted just fine into the Ubuntu 8.10 desktop install. (Sidenote: I’ve only previously booted off LiveCDs which were actually on CD media, and I have to say, if you have the option of USB booting: DO IT. It’s incredibly fast and makes the Live environment actually usable as a proper temporary system!)

I installed Ubuntu and rebooted. No dramas. Then I set up the wireless and that worked first try.

I browsed on over to apple.com/trailers and clicked on a 720p movie trailer. Ubuntu/Firefox told me it needed to install additional software to continue. I did so, restarted Firefox, and once the page loaded up the 720p Apple trailer started playing!

I simply couldn’t believe my eyes: a. that this $299 little computer, the size of two DVD cases, was playing back 720p HD content over the ‘net/wireless with no stutter and no dropped frames, and b. that it was doing so using a freely available operating system that took me literally 10 minutes to install.

Absolutely incredible!

I highly recommend the eeeBox and Ubuntu combination to anyone who’s responsibility is to “fix computers for the family” — you simply can’t go past the price tag, ease of installation and use.

I’m a pretty big open-source advocate and follow the trends quite closely, but I had no idea things had come this far. Consider me blown away.

I’m considering one for myself now. Combined with a couple of USB hard disks (with mdadm RAID and LVM) and a USB TV adaptor, it’d make a perfect low-power media centre + network data storage device.

What: An open-source jukebox.
How: Read on!

Recently I was tasked with creating a jukebox for a party. You can read all about my thoughts on the matter at the link; this article is to provide with the specifics on what software I used, and why.

  • The Hardware

    The hardware I chose to use was rather limited in performance, which I think illustrates the efficiency of the software and solution which I designed. Components were as follows:

    • CPU: Pentium II 300Mhz
    • RAM: 384Mb SDRAM
    • Motherboard: Intel i440BX-based
    • Video: S3 Virge DX/3D
    • Storage: 4Gb, 5400RPM ATA HDD
    • Sound: Creative Sound Blaster Live! 5.1

    Obviously, I chose the software based on the known limitations of this hardware. Luckily I had a spare SoundBlaster Live! card, because I don’t think the system would’ve been able to reliably handle the music playback and the overheads of the user interface without it. Of course, whatever hardware you plan on using will probably be much faster. I really did pull this box right out of the stone age.

  • The Operating System

    The operating system I chose in order to optimise performance was of course my favourite Linux operating system: Arch Linux. With the kernel, modules and all packages being i686-optimized, it was a good starting point for a “from scratch” jukebox system. More importantly though is that after installation of the base system, I had a basic, but fully working, command line Linux system at my disposal. This meant there were no unnecessary startup services, configurations and other settings which would have been useless, redundant or otherwise a hinderence to performance on this slow system.

  • The Desktop Environment

    I chose to install XFCE as the desktop environment because it is the most lightweight of the ‘fully-featured’ environments. I would have liked to use an even lighter option, but of all the specialty and niche options available, I had never used any before, and this build was to be completed in a few hours. So, I chose XFCE which I found behaved no differently to GNOME, but was still relatively responsive despite limited system resources.

    To make the GUI look decent, I had to install a few additional packages that are not explicit dependencies of XFCE. They are listed below.

    • ttf-ms-fonts – the easiest way to make websites look nice is by installing this font package
    • midori – a lightweight, Webkit based browser for GTK+ environments. I chose this over Firefox due to the AJAX-heavy nature of the relaxx player. Webkit is supposedly superior in performance compared to alternatives
  • The Webserver

    Now, you may be wondering why, with such a limited system, I was bothering with so many layers of abstraction between music, player and control. The reason is that none of the music playing applications I investigated (and there were quite a few) offered any functionality near that of a simple party jukebox. So, I had to use a web-based front end for mpd called relaxx, both of which I’ll talk about soon.

    The webserver of choice is lighttpd; a light weight simple web server, with all the features (and a lot more) required for what I had in mind.

  • The Music Daemon

    Simply put: mpd. Or, Music Player Daemon, as it is less commonly known. I chose this system for multiple reasons: first and foremost, its awesome efficiency. With my 80Gb music collection catalogued and at my immediate disposal, mpd uses approximately three megabytes of system memory. Yes, you read that correctly: three. megabytes. If I go ahead and do something silly like, say, add my entire music collection into a single playlist, that number jumps to a staggering (!!!) eight megabytes. Yeah, I know. It’s ridiculous.

    Secondly, due to the daemon nature of mpd, you can use any frontend you like. You can use a text-based terminal application, you can use a GTK+, Qt or other, or you can use a web-based application, like relaxx player.

  • The Music Frontend

    This is the party piece — the piece of the system that everyone gets to see. I chose relaxx player because it had some of the functionality that provides jukebox-like behaviour. Well, kind of. It essentially only had one major feature that made it stand out from a variety of other mpd front-ends: multi-user capability. Essentially, you could lock down certain features of the interface for anonymous users, and require a login for those functions. So, essentially that meant I could specify that anonymous users were only allowed to add songs to the playlist and press play. Meaning you had to log in to delete tracks, stop, pause or rewind, etc.

    The installation of relaxx was straightforward, but I had to install a few extra packages under Arch to make it work properly:

    This was the only part of the system which didn’t quite work out so well. Its functionality was great, but due to the fact that it’s programmed entirely in AJAX, the old Pentium II powering the computer couldn’t quite keep up. It was slow to respond and not very nice to use, but it was usable. The music itself never skipped a beat (literally), but the performance of this frontend left something to be desired.

For a while there, I’d lost my groove. I’ve always been seriously interested in constantly learning new things about computers, and learning new things in general. For a while there, my interest was waning somewhat. I’m still trying to figure out exactly what it was, although I know many people will tell me it was my other half. Haha, yeah, that works.

Anyway, the point I’m making is that for the last 12 months or so I’ve been wallowing a little in my own self-pity. There was an interesting story on Triple J’s hack programme Friday, about how kids — well, young adults — these days are stressed out to the max when it comes to making life decisions. Australia’s quite a well-off nation, and our high-school graduates are faced with so many choices because of this. Straight into work, tertiary education, travelling the world, dole bludging even. The comparison is made to the era of our parents whose career choices were extremely limited. A good example would be my own mother who finished school at the end of year ten, whose only marketable skills at the time saw her placed into any of the following roles: secretary, typist, or administrative assistant. Yeah, you see what I’m getting at?

These days, we have so much freedom in terms of choosing our career paths … it’s quite stressful. The point is made on the programme that it sounds spoilt, but the burden of choice is extremely taxing on our young minds, and it’s not an easy decision at all.

Anyway, the point I’m getting to is that I’ve never really know what I wanted to do. Parents and teachers always asked during high-school, and even before, “what do you want to be when you grow up?” — which I think stemmed from their own upbringing, and the mindset that you were destined for some arbitrary role in society of your limited choosing. They asked a question which wasn’t relevant to the children whom they were asking. In my case especially, as I’ve never really had any life goals.

I want to own a sports car, and I want to own a house one day. The time frames are pretty undetermined. Though these days I’m thinking more about those two goals, if you’d asked me about those things three years ago, I wouldn’t have had an answer for you. These things do take time.

So for the last twelve months or so I’ve been doing not much with my life. Just studying and working when I have to, and in my personal time, chillaxing. Which is fine, but I think I neglected my self-learning a little. I dropped out of the loop for a while. In hindsight, I can see that it was a good thing for me to have done. I was getting bored with it all, and I needed a change of pace. So I spent time with my girlfriend a lot, and more recently started wasting time playing World of Warcraft.

I don’t mean to say that I’m going to neglect my personal time now that I’ve re-energized myself. I’m going to devote more thought to my personal time so that the time I do spend on myself, and on others, is more worthwhile.

Work has picked up, though. Not my main job, that’s still pretty bland. I don’t care about finance so much. It’s remotely interesting, and I’ll pick up tidbits as I go along, but I won’t actively teach myself about it. My other job however has started off excellently. I’m my own business and I’m doing some research for a guy who does full IT system implementations for small businesses. The twist is that he does it using all open-source software. You know how much I love open-source.

So last Wednesday, my first time working for him, I spent some of the day researching ways to do unattended installations with Ubuntu Linux, and then I spent the rest of the day starting to implement our first revision of system we’re putting in place. I spent the entire day working on my laptop (Arch Linux), logged into his server (Ubuntu), using awesome open-source tools (Firefox, Tomboy Notes, vi, etc). It wasn’t restricting (licences). I didn’t have to learn to speak another language (Microsofteese). I wasn’t constantly worried about lack of documentation (third-parties).

So now even though I’m about to spend my Sunday fixing not one but two Windows PCs for friends and family, I’m not in that poor a mood. I’m going to fix one by installing Ubuntu on it and having all the Windows-only apps run in a virtual machine courtesy VirtualBox, and the other I’m charging for. So that balances out for me!

Anyway, the Ubuntu ISO has finished downloading, so I better get to it.

Sep 6th, 2006

Protected: GPL guffaws: Jin vs. IChessU

Enter your password to view comments.

This post is password protected. To view it please enter your password below:


Open Source Institute
The benefits of open-source software have been known to its proponents since the concept’s inception. Open source, by its very nature, is open software that allows for addition and modification of source code by any and all who choose to do so. Consequently, follow-on benefits become apparent: this open nature is conducive for producing an IT environment powered and supported by open technologies that are transparent, interoperable, and efficient.

Instead of being restricted by proprietary licencing and arbitrarily enforced limitations, open-source software leaves developers and users alike to make free choices about the software they use. Unrestricted by vendor lock-in, users are free to switch software solutions as they please, allowing IT departments and home users alike to make quick and resolute decisions concerning software they use.

This of course is much to the chagrin of large software organisations that rely on said vendor lock-in to maintain market share. This has been one of the main sticking points for many governments, businesses and other organisations plans to transition to free and open-source software solutions. However, recently the US Department of Defence and the Croatian government have both made serious efforts toward evaluating and implementing open-source software solutions for use in their day-to-day tasks; the Croatian government has implemented an open-source software policy for all government departments, which encompasses the following guidelines:

  • Government institutions will choose and/or develop open source solutions as much as possible, instead of using closed source alternatives.
  • The government will support development of closed source solutions that use open standards for protocols and file formats, and which are developed in Croatia.
  • The government will support the use of open source programs and open standards outside of its institutions.
  • The government will support the use of open source solutions in educational institutions; both closed and open source solutions will be equally presented to students.

(provided by NewsForge, “Croatian Government adopts open-source software policy“)

Indeed, from the NewsForge article linked above, here are the words of Domagoj Juricic, deputy state secretary at the Central State Administrative Office for e-Croatia, who is the leader of Croatia’s Open Source Software Policy project:

“The use of information technology in government administration bodies is increasingly becoming important. So far, most of the software we use is proprietary software, so we cannot modify or complement it, or link software from different vendors. These software products impose rigid commercial conditions of use and limit our possibilities. In this way, government administration bodies may be led into a dependent position on the supplier of the software. This could lead to closed information systems, which make the success and efficiency of our eAdministration project more difficult.”

Similar sentiments are put forward by the US Deparment of Defence’s report, The Open Technology Road Map. The report identifies critical differences between the acqusition of physical goods vs the aquisition and use of digital media. While currently, many proprietary software programmes are treated the same way as a physical good, the report argues the arbitrary limitations of proprietary software, stating:

Digital goods (software code, music, movies, etc.) once created can be copied perfectly with relative ease: limiting distribution enforces scarcity, but that scarcity is arbitrary and negotiated, rather than an innate property of the product.

This arbitrary limitation of software availability also has an impact on inter-departmental software sharing:

Currently within DoD, there is no internal distribution policy or mechanism for DoD developed and paid for software code. By not enabling internal distribution, DoD creates an arbitrary scarcity of its own software code, which increases the development and maintenance costs of information technology across the Department. Other negative consequences include lock-in to obsolete proprietary technologies, the inability to extend existing capabilities in months vs. years, and snarls of interoperability that stem from the opacity and stove-piping of information systems.

Alongside vendor lock-in and the consequent reliance upon the software vendor, proprietary software suffers from lack of features, as well slow turnaround time for bugfixes and feature requests. Open software does not suffer the same limitations, as software developers can be contracted as needed to make additions to existing software, without the arbitrary licencing restrictions placed upon alternative proprietary software. Software developed for use in one department can be easily deployed in other departments, and collaboration of efforts between inter-departmental software development is made easier.

If the Croatian government and the US Department of Defence can adopt open-source ideals, technology and software, there is no reason why other governments and government departments cannot do the same. Open software allows for consistent interoperability (code-sharing, systems compatability, data management), offers system transparency (ease of auditing, bugtracking and fixing, feature implementations) and improves efficiency (reduction of code duplication through code re-use, ease of integration of new features and technology, streamlining of developer contracting) and overall, produces not only a better system of software, but at the same time reduces cost, eliminates vendor lock-in, and produces community-friendly code, which benefits everyone.

This post is password protected. To view it please enter your password below:


Aug 5th, 2006

Protected: WiFi exploited at driver level

Enter your password to view comments.

This post is password protected. To view it please enter your password below: