Archive for the ‘hardware’ Category

Geek review of Bluesound Node

Monday, December 30th, 2013

I recently reviewed the Bluesound Node from a end user perspective. It rocks the house, so to speak.

The geek in me would not and could not let that be the end of it. How is it built? What makes it tick? Stuff like that.

A quick nmap of the box yields


edison% nmap

Starting Nmap 5.00 ( ) at 2013-12-30 19:37 CET
Interesting ports on
Not shown: 998 closed ports
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 2.71 seconds

The webserver serves some very minimal pages. Most interessting are the diagnostics pages. The advanced tab, actually serves the output of dmesg and /var/log/messages, so obviously linux inside.

A lot could be deduced from the output of dmesg alone, but being a geek I wanted to know everything.  A quick test with root/root and whats not yielded nothing using ssh. Actually the user/user combo works wrt. authorization, but fails due to the fact that /home/user does not exists.

On the back of the node there are a mini usb for support. Obviously that is a console port. I tried to play around with that a bit, but no obvious way in, except knowing the root password.

I then used a couple of hours of my life and figured out how to gain access without knowing the root password. The details will be kept off the net. You have to figure it out yourself.

But in the end

root@Stue ~$ uname -a
Linux Stue #117 PREEMPT Tue Dec 3 16:51:52 EST 2013 armv7l GNU/Linux
root@Stue ~$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 799.53
Features        : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc08
CPU revision    : 5

Hardware        : NAD SOVI Board
Revision        : 51030
Serial          : 0000000000000000
root@Stue ~$ cat /proc/meminfo  | head -10
MemTotal:         254980 kB
MemFree:           83216 kB
Buffers:            7856 kB
Cached:            76932 kB
SwapCached:            0 kB
Active:            99812 kB
Inactive:          60908 kB
Active(anon):      75948 kB
Inactive(anon):      312 kB
Active(file):      23864 kB

[    0.000000] Linux version (kg@ubuntu) (gcc version 4.4.4 (4.4.4_09.06.2010) ) #117 PREEMPT Tue Dec 3 16:51:52 EST 2013
[    0.000000] CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c53c7f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: NAD SOVI Board
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 65536
[    0.000000] free_area_init_node: node 0, pgdat 804c0634, node_mem_map 804eb000
[    0.000000]   DMA zone: 192 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 24384 pages, LIFO batch:3
[    0.000000]   Normal zone: 320 pages used for memmap
[    0.000000]   Normal zone: 40640 pages, LIFO batch:7
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait ro rootfstype=ext4
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Memory: 256MB = 256MB total
[    0.000000] Memory: 254868k/254868k available, 7276k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 – 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 – 0xfffe0000   ( 896 kB)
[    0.000000]     DMA     : 0xf9e00000 – 0xffe00000   (  96 MB)
[    0.000000]     vmalloc : 0x90800000 – 0xf4000000   (1592 MB)
[    0.000000]     lowmem  : 0x80000000 – 0x90000000   ( 256 MB)
[    0.000000]     modules : 0x7f000000 – 0x80000000   (  16 MB)
[    0.000000]       .init : 0x80008000 – 0x80024000   ( 112 kB)
[    0.000000]       .text : 0x80024000 – 0x8046a000   (4376 kB)
[    0.000000]       .data : 0x80484000 – 0x804c1040   ( 245 kB)
[    0.000000] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU-based detection of stalled CPUs is disabled.
[    0.000000]  Verbose stalled-CPUs detection is disabled.
[    0.000000] NR_IRQS:272
[    0.000000] MXC GPIO hardware
[    0.000000] MXC IRQ initialized
[    0.000000] MXC_Early serial console at MMIO 0x73fbc000 (options ‘115200’)
[    0.000000] bootconsole [ttymxc0] enabled
[    0.000000] Console: colour dummy device 80×30
[    0.475328] Calibrating delay loop… 799.53 BogoMIPS (lpj=3997696)
[    0.703896] pid_max: default: 32768 minimum: 301
[    0.707706] Security Framework initialized
[    0.711075] Mount-cache hash table entries: 512
[    0.715116] CPU: Testing write buffer coherency: ok
[    0.722633] regulator: core version 0.5
[    0.726039] NET: Registered protocol family 16
[    0.729770] i.MX IRAM pool: 128 KB@0x90840000
[    0.733448] IRAM READY
[    0.737156] CPU is i.MX51 Revision 3.0
[    0.780569] Using SDMA I.API
[    0.783084] MXC DMA API initialized
[    0.786395] IMX usb wakeup probe
[    0.789124] the wakeup pdata is 0x80490eb8
[    0.789147] IMX usb wakeup probe
[    0.791858] the wakeup pdata is 0x80490f6c
[    0.801784] bio: create slab <bio-0> at 0
[    0.806432] SCSI subsystem initialized
[    0.810273] CSPI: mxc_spi-0 probed
[    0.813554] Freescale USB OTG Driver loaded, $Revision: 1.55 $
[    0.928925] usbcore: registered new interface driver usbfs
[    0.933645] usbcore: registered new interface driver hub
[    0.938140] usbcore: registered new device driver usb
[    0.944076] Advanced Linux Sound Architecture Driver Version 1.0.23.
[    0.949939] mc13892 Rev 2.4 FinVer 2 detected
[    0.953900] Initializing regulators for NAD SOVI.
[    0.958842] regulator: SW1: 600 <–> 1375 mV at 1050 mV
[    0.963928] regulator: SW2: 900 <–> 1850 mV at 1225 mV
[    0.968760] regulator: SW3: 1100 <–> 1850 mV at 1200 mV
[    0.973686] regulator: SW4: 1100 <–> 1850 mV at 1800 mV
[    0.978440] regulator: SWBST:
[    0.981374] regulator: VIOHI:
[    0.984427] regulator: VPLL: 1050 <–> 1800 mV at 1800 mV
[    0.989364] regulator: VDIG: 1650 mV
[    0.992759] regulator: VSD: 1800 <–> 3150 mV at 3150 mV
[    0.997744] regulator: VUSB2: 2400 <–> 2775 mV at 2600 mV
[    1.002851] regulator: VVIDEO: 2775 mV
[    1.006396] regulator: VAUDIO: 2300 <–> 3000 mV at 3000 mV
[    1.011495] regulator: VCAM: 2500 <–> 3000 mV at 2600 mV fast normal
[    1.017172] regulator: VGEN1: 1200 mV
[    1.020756] regulator: VGEN2: 1200 <–> 3150 mV at 3150 mV
[    1.025887] regulator: VGEN3: 1800 <–> 2900 mV at 1800 mV
[    1.030904] regulator: VUSB:
[    1.033666] regulator: GPO1:
[    1.036497] regulator: GPO2:
[    1.039256] regulator: GPO3:
[    1.042029] regulator: GPO4:
[    1.045666] Device spi1.0 probed
[    1.048528] Switching to clocksource mxc_timer1
[    1.053749] NET: Registered protocol family 2
[    1.057403] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    1.063405] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    1.069284] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[    1.074643] TCP: Hash tables configured (established 8192 bind 8192)
[    1.079822] TCP reno registered
[    1.082401] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    1.087167] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    1.092389] NET: Registered protocol family 1
[    1.096156] RPC: Registered udp transport module.
[    1.099992] RPC: Registered tcp transport module.
[    1.103922] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.109898] LPMode driver module loaded
[    1.113096] Static Power Management for Freescale i.MX5
[    1.117591] PM driver module loaded
[    1.120606] sdram autogating driver module loaded
[    1.124745] Bus freq driver module loaded
[    1.128048] mxc_dvfs_core_probe
[    1.130828] DVFS driver module loaded
[    1.133869] i.MXC CPU frequency driver
[    1.137356] DVFS PER driver module loaded
[    1.155861] Installing knfsd (copyright (C) 1996
[    1.162207] Slow work thread pool: Starting up
[    1.166497] Slow work thread pool: Ready
[    1.169698] NTFS driver 2.1.29 [Flags: R/O].
[    1.173852] fuse init (API version 7.14)
[    1.177767] msgmni has been set to 497
[    1.183015] alg: No test for stdrng (krng)
[    1.186600] cryptodev: driver loaded.
[    1.189620] io scheduler noop registered
[    1.192902] io scheduler deadline registered
[    1.196489] io scheduler cfq registered (default)
[    1.439983] Serial: MXC Internal UART driver
[    1.443824] mxcintuart.0: ttymxc0 at MMIO 0x73fbc000 (irq = 31) is a Freescale i.MX
[    1.450099] console [ttymxc0] enabled, bootconsole disabled
[    1.462182] mxcintuart.1: ttymxc1 at MMIO 0x73fc0000 (irq = 32) is a Freescale i.MX
[    1.470812] mxcintuart.2: ttymxc2 at MMIO 0x7000c000 (irq = 33) is a Freescale i.MX
[    1.483203] loop: module loaded
[    1.486775] FEC Ethernet Driver
[    1.493082] fec_enet_mii_bus: probed
[    1.497306] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[    1.504066] fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
[    1.510711] fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
[    1.542280] fsl-ehci fsl-ehci.0: irq 18, io base 0x73f80000
[    1.562251] fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
[    1.568937] hub 1-0:1.0: USB hub found
[    1.572760] hub 1-0:1.0: 1 port detected
[    1.792258] fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
[    1.798907] fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
[    1.832279] fsl-ehci fsl-ehci.1: irq 14, io base 0x73f80200
[    1.852257] fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
[    1.858786] hub 2-0:1.0: USB hub found
[    1.862596] hub 2-0:1.0: 1 port detected
[    1.867015] Initializing USB Mass Storage driver…
[    1.872131] usbcore: registered new interface driver usb-storage
[    1.878187] USB Mass Storage support registered.
[    1.882826] ARC USBOTG Device Controller driver (1 August 2005)
[    1.889550] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    1.897518] pmic rtc probe start
[    1.901432] pmic_rtc mc13892_rtc.1: rtc core: registered mc13892_rtc as rtc0
[    1.908562] pmic rtc probe succeed
[    1.912319] IR NEC protocol handler initialized
[    1.916856] IR RC5(x) protocol handler initialized
[    1.921650] IR RC6 protocol handler initialized
[    1.926214] IR JVC protocol handler initialized
[    1.930748] IR Sony protocol handler initialized
[    1.935382] MXC WatchDog Driver 2.0
[    1.939394] MXC Watchdog # 0 Timer: initial timeout 60 sec
[    1.946510] mxsdhci: MXC Secure Digital Host Controller Interface driver
[    1.953319] mxsdhci: MXC SDHCI Controller Driver.
[    1.958952] mmc0: SDHCI detect irq 128 irq 1 INTERNAL DMA
[    1.964444] mxsdhci: MXC SDHCI Controller Driver.
[    1.969706] mmc1: SDHCI detect irq 0 irq 2 INTERNAL DMA
[    1.975389] Registered led device: status_blue_a
[    1.975565] Registered led device: status_blue_b
[    1.975737] Registered led device: status_green
[    1.975909] Registered led device: status_red
[    1.977248] Cirrus Logic CS4350 ALSA SoC DAC Driver
[    2.013004] cs4350_spi spi1.2: found a CS4350 at REV C2
[    2.028561] No device for DAI imx-ssi-1-0
[    2.032611] No device for DAI imx-ssi-1-1
[    2.036660] No device for DAI imx-ssi-2-0
[    2.040675] No device for DAI imx-ssi-2-1
[    2.044735] No device for DAI imx-ssi-3-0
[    2.048751] No device for DAI imx-ssi-3-1
[    2.053946] in imx_sovi_asoc_init
[    2.057321] in imx_sovi_cs4350_probe
[    2.072494] capture=0 ext_ram=0 UseIram=0
[    2.077896] DMA Sound Buffers Allocated:UseIram=0 buf->addr=9f300000 buf->area=f9e0a000 size=524288
[    2.086991] asoc: cs4350 <-> imx-ssi-2-0 mapping ok
[    2.091916] Failed to add route AOUT1L->Line Out Jack
[    2.101133] ALSA device list:
[    2.104163]   #0: imx-sovi (CS4350)
[    2.108207] TCP cubic registered
[    2.111463] NET: Registered protocol family 17
[    2.116030] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
[    2.157905] regulator_init_complete: disabling VCAM
[    2.163022] regulator_init_complete: disabling VAUDIO
[    2.169251] regulator_init_complete: disabling VSD
[    2.174254] regulator_init_complete: disabling VDIG
[    2.179556] pmic_rtc mc13892_rtc.1: setting system clock to 2013-12-30 18:50:38 UTC (1388429438)
[    2.188605] Waiting for root device /dev/mmcblk0p2…
[    2.291639] mmc0: new high speed SDHC card at address aaaa
[    2.297558] mmcblk0: mmc0:aaaa SU04G 3.69 GiB
[    2.302174]  mmcblk0: p1 p2 p3
[    2.427492] mmc1: new SDIO card at address 0001
[    2.437448] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.445667] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    2.452531] Freeing init memory: 112K
[    2.572303] USB Host suspend begins
[    2.572327] will suspend roothub and its children
[    2.572361] ehci_fsl_bus_suspend, DR
[    2.572777] host suspend ends
[    2.868618] EXT4-fs (mmcblk0p3): warning: maximal mount count reached, running e2fsck is recommended
[    2.880309] EXT4-fs (mmcblk0p3): recovery complete
[    2.886462] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: commit=30
[    4.542400] ehci_fsl_bus_suspend, Host 1
[    6.560837] mxc_spdif mxc_spdif.0: MXC SPDIF Audio Transmitter
[    6.569232] No device for codec mxc spdif
[    6.573331] No device for DAI mxc spdif
[    6.584224] No device for DAI imx-spdif-dai
[    6.600331] capture=0 ext_ram=0 UseIram=0
[    6.617000] DMA Sound Buffers Allocated:UseIram=0 buf->addr=9f500000 buf->area=f9e8f000 size=524288
[    6.626175] asoc: mxc spdif <-> imx-spdif-dai mapping ok
[    6.770533] eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)
[    6.961939] Compat-drivers backport release: compat-drivers-v3.8-1

So it is a NAD SOVI board using an i.mx51 freescale arm processor. With 256MB memory. The sound are produced by an Cirrus Logic CS4350 chip. The system runs a 2.6.35 kernel off a NAND flash chip in a very trimmed down setup based around busybox and the selected custom applications needed to make a media player. The system utilizes the very well known and awsome u-boot boot loader.

Without voiding guarantee by opening up the box, I can not get more specific information than that.

What amazes me the most about this setup, is that the system outputs very good sound quality, is very very stable, has fast boot times and yet does not consume very much memory. This is a lean, mean, music machine. It has one purpose in life and are trimmed down to fulfill that purpose and only that purpose.

That being said, I can see that the platform is built to support more extensive media streamers. Mine is just the low cost one. I also speculate that the NAD SOVI board has GPIO pins needed to fit into products with way more features.

Gaining access to the OS will allow me to tweak the setup a bit more to my need being both a programmer and a Linux sysadm. I have no desire to alter the OS and/or hardware, but I can envision the need for using the USB port to control an amplifier or integrate the NODE with other equipment over IP. Small tweaks. But again. Out of the box this is a wonderful product that I will recommend to friends and family.


End user review of Bluesound Node

Tuesday, December 17th, 2013

My wife and I have for years listened to music from CDs on our DALI 400 loudspeakers through an NAD 3020i amplifier and our NAD T514 DVD player.

This setup has served us well. CD’s are however an outdated technology and we found

  • that we stashed most of our CDs away. They might have looked cool on the wall in the 90′, but in 2013, in Denmark, they should be out of sight
  • that due to the point above, we only listened to a selected few
  • that many of our CDs was started to wear out
  • that our T514, which have served us well, was started to show the first sign of old age

So what to do? We looked for a way to be able to enjoy CD quality without hazzle, while taking the leap into streaming music.

We took a look at Sonos, but rejected it due to their sound quality. We considered an all streaming solution (skipping our CDs for good), but also rejected that, due to posession of a lot of non-mainstream CDs.

After investigating the market in 2013, we decided to try out a product from a canadian firm called bluesound. Bluesound and NAD electronics are owned by the same holding company, Lenbrook Industries, so many of the engineers producing NAD equipment are also involved in producing Bluesound equipment. That bodes well for the quality of Bluesound. And then bluesound have recieved good reviews audiowise from a couple of sites around the world. Given that the equipment is fairly fresh of the assembly line that is also a plus.

Bluesound produces a couple of variants of their streaming media players. We already have an amplifier, so we passed on the powernode. The vault seems cool, but a bit pricy. So due to the fact that I, as a nerd, already have a server running 24×7, we choose the cheap(ish) Bluesound Node.

Bluesound Node

We bought the node through the danish reseller It arrived in a couple of days. The package contains the node itself, a quickstart manual, and cables needed for connecting the node to power, network and amplifier.

The node does not have a remote, but relies on the user having a smartphone (android or ios), which will be used for controlling the node through the Bluesound App.

The initial setup was a breeze. When first powered on, it comes up in AP/hotspot mode. You connect your smartphone to the AP, and start the Bluesound App. A wizard will guide you through the setup, which takes 1-3 minutes. After that, the node reboots and is ready for use. I setup a CIFS share.

I then ripped all our CDs using fre:ac. It went fairly quickly. A couple of notes:

  • The more CD drives, the more you can process at a time
  • Use CDDB
  • Rip to FLAC, it will save cpu cycles and you basically rip as fast as the CD drive will allow you to. Some of our CDs took around 60 seconds to rip to FLAC!
  • Each time you rip a CD, browse for the cover art meanwhile and store the coverart inside the folder with the music and name the cover art folder.jpg

After 5-10 cds it was apparent to us, that the Bluesound Node produces sound of the same or better quality than our CD player. So bluesound node is without a good streaming player. Factoring in how little money you have to pay for it, it is a really good bargin. It has just worked since day one and we have been listening to a lot more music than we did just 14 days ago!

The app on the smartphone works well. It has some minor issues, but the real beef with the app is the fact that we lack some features. Those will hopefully be added later.

So all in all 9 out of 10 stars from an enduser of bluesound node. It is highly recommended for replacement of CDs.

Installing ESXi 4.1 on an AMD Brazos platform

Saturday, April 23rd, 2011

One of my projects this easter was to give my home server an overhaul. The harddrives was running very low on kapacity and the Ubuntu server installation was beginning to be a nightmare to maintain. I choose to upgrade the hardware as well and then thrown in ESXi into the equation as well.

The hardware

The hardware centers around an  ASUS E35M1-M mainboard with an AMD Zarcate APU and a AMD Hudson M1 FCH. The APU has two cores, a TDP of mere 18W and has the AMD-V extensions.

I bought 2 x 4GB of memory for the setup, which is maximum for the board.  Lastly I bought a couple of Samsung F4EG HD204ui drives (low power, low cost, high capacity, resonable performance)

Planning it

Planning the installation revealed that

  • ESXi 4.1 does not support the board; the onboard NIC is not supported.
  • The Samsung drives has a serious firmware bug.
  • The E35M1-1 doesn’t have raid functionality, if you care about (some of) your data.
  • The E35M1-1 board has an EATX 24pin power connector and my oldish antec cabinet/psu only has an ATX 20pin.

All items can either be fixed or worked around, not to worry.

Getting the hardware running.

I put the hardware together in my oldish Antec cabinet. I then used a standard $10 multimeter to verify that the 4 extra pins on the EATX connector on the mainboard (compared to a normal 20 pin ATX connector),  was in fact hardwired/bridged to other pins on the mainboard. This bascially means, that a 20 pin ATX PSU will suffice for this board.

Hardware assembled. Using an normal ATX 20 pins PSU

After that, I obtained the firmware fix for the Samsung drives. It turned out, that I did not need it as drives manufactured later than December 2010 already contains the fix according to this post.

Installing ESXi 4.1 on the E35M1-M

You can download ESXi 4.1 for free. I did that. I burned the .iso file and booted from the CD. It booted the hypervisor, but complained/failed when I pressed F11 for installation. As guessed, it is due to the fact that the NIC, an RealTek 8111E is not supported.

The fix is to include the realtek 8111E driver in the iso file, in two places: One place, used to include support in the installer. An one inside the ddimage, that the installer deploys onto the hardware. It is fairly simple if you know your way around linux. Instructions on how to build ESXi modules is on the net. For the lazy, you can pretty much get it served to you: an oem.tgz (local copy here) and a script called mkesxiaio (local copy here) that combines the oem.tgz and the ESXi installation iso.

Download iso and oem.tgz and script. Run script and burn resulting iso file. Boot that iso and install ESXi 4.1 onto the system. For me it worked flawlessly.

Booting the ESXi 4.1 hypervisor on the ASUS E35M1-M mainboard

The Software side

After that I installed the ESX license key, provisioned an vm, installed debian 6.0 and migrated all my files to the new server.

In the past I used to have a raid setup. The Hudson H1 FCH does not have raid support and neither does ESXi, except on selected raid controllers. Now what?

The trick is to do it in software on the VM side. You provision two VM disks, one from each datastore, and combine them into a mirror/raid device inside the vm. You basically have two options:

  1. md driver
  2. lvm mirror

If you care about performance and the integrity of your data, you should go for the md driver as it respects write barriers.  for my setup I thus ended up with 5 vmdisks

  • One for the OS
  • two combined into an md device for the crucial stuff and that in turn was used in a vg called vgsafe
  • two spanned across that datastores for the the non crucial stuff.  Those disks were just added to a vg called vgspan
edison% mount | egrep -i ‘(mapper|boot)’
/dev/mapper/edison-root on / type ext3 (rw,errors=remount-ro)
/dev/sda1 on /boot type ext2 (rw)
/dev/mapper/edison-tmp on /tmp type ext3 (rw)
/dev/mapper/edison-usr on /usr type ext3 (rw)
/dev/mapper/edison-var on /var type ext3 (rw)
/dev/mapper/vgsafe-lvhome on /home type ext4 (rw)
/dev/mapper/vgspan-software on /home/software type ext4 (rw)
/dev/mapper/vgspan-media on /home/media type xfs (rw)

Utilizing Seagate 7200.12 drives in an MSA20

Wednesday, February 2nd, 2011

About a year ago, I upgraded an MSA20 with non-HP drives. 1TB drives (7200.11 series) made by Seagate to be precise. Here one year later, the first drives start to fail. Looking for replacements we had a hard time finding the 7200.11 series drives. We then bought some 1TB 7200.12 drives.

And they work just fine……

Same model number, just different firmware as seen from the MSA20 (CC46 vs CC38):

physicaldrive 1:7
Box: 1
Bay: 7
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 1000.2 GB
Firmware Revision: CC46
Serial Number:             9VPB04V3
Model: Seagate ST31000528AS
SATA NCQ Capable: False

physicaldrive 1:8
Box: 1
Bay: 8
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 1000.2 GB
Firmware Revision: CC38
Serial Number:             9VP4D1F1
Model: Seagate ST31000528AS
SATA NCQ Capable: False

Configuring and using the BMC on an IBM eServer 326.

Sunday, October 3rd, 2010

The IBM eServer 326 comes with a fairly minimalistic Baseboard Management Controller (BMC). That is understandable when you look at the form factor (1U) of the eServer 326 as well as the pricetag it had when it was introduced. IBM tried to give the eServer 326 some RAS features without impacting the price. Kudos for that!

It does also however, mean that it is hard to use and configure. A couple of points

  • The BMC piggybacks/shares the first NIC with the system (LAN 1)
  • You have to start the server once before the BMC gets activated. It is not truely a seperate entity of its own
  • When you enter the system BIOS you see a BMC menu option. Clicking that however will not allow you to configure the LAN settings of the BMC, hence this blog post.
  • At times the BMC is unreachable due to the fact that the NIC is a shared NIC.

When you boot the disk/iso, it will normally go through an upgrade cycle before you end up in the lancfg tool. If you only want to configure the BMC, you can break the upgrade during startup (ctrl-c) and start lancfg yourself.

content of the lancfg disk

Inside lancfg you can configure the ip settings of th BMC ….

lancfg – ip settings

… as well as the SNMP settings

snmp settings of the BMC

You can also setup privileges to be used when accessing the BMC. The default BMC username and password for the IBM eServer 326 is USERID/PASSW0RD (with a zero)

After you have installed the tool, you can use it under linux as follows:

edison% ./usr/bin/smbridge -ip sysinfo
DeviceID=       0
DeviceRevision= 1
FirmwareVersion=        1.25
IpmiVersion=    1.5
ManufacturerID= 2
ProductID=      34888
Status= OK
SDRVersion=     1.5
Guid=   171c049f-4ea8-b387-119d-321e09d85fe8


edison% ./usr/bin/smbridge -ip power
Status= on

edison% ./usr/bin/smbridge -ip power reset
Error(power,0xa3):Insufficient privilege level.
edison% ./usr/bin/smbridge -ip -u USERID -p PASSW0RD power reset

edison% ./usr/bin/smbridge -ip -u USERID -p PASSW0RD power off

edison% ./usr/bin/smbridge -ip -u USERID -p PASSW0RD power on

edison% ./usr/bin/smbridge -ip -u USERID -p PASSW0RD power cycle

And that is about it. Not enterprise RAS features, but enough to reset a hung machine and stuff like that. Given that the eServer 326 was marketed as a cheap calculation node in a calculation farm, the BMC features fits the bill perfectly, even though it would have been nice with some remote console features as well….

How to use a broken IBM Thinkpad T43 for something useful using puppy linux.

Wednesday, July 21st, 2010

I recently got my hands on a IBM Thinkpad T43. Unfortunately it was broken. More specifically the connector between the mainboard and the harddrive had problems.

IBM T43 connector (broken)

I googled a bit and discovered, that this was a known problem. The laptop worked fine, if I put pressure on the right spot on the case of the Thinkpad. Otherwise it would not detect and/or spin up the harddrive. I tried to fix it by re-soldering the connector and using some two-component glue to fixate the connector. I did not succeed :-/

So then what? Throw out the laptop? Or? … I decided to make a project out of it.

A laptop without storage is useless. Due to the broken connector, I could not use a harddrive. I did not want to use a cdrom as it is a slow medium. That left me with a USB flash drive as the only option. It would be a clumsy solution just to plug a USB flash drive into the laptop and be done with it, so I chose to solder a USB flash directly onto the mainboard.

First I stripped a standard 1GB USB Flash from its case and detached the PCB from the USB connector using a soldering iron

Stripped USB flash

After that I soldered 5 wires onto the PCB of the laptop and used one of the holes in the PCB used for assembly as a pass through hole. I initially used 4 wires as the USB connector only had 4 pins, but that was not enough. More on that later.

Wires soldered onto mainboard

Having soldered the wires onto to the mainboard, I now needed to solder the other ends onto to the PCB of the USB flash. That went fairly smoothly

Wires soldered onto flash

Before powering on anything, I used a multimeter to check for bad solderjoins and shorts. I found neither.

Checking for shorts using digital multimeter

Luckily I had a Linux based rescue distribution installed on the USB flash drive, so I just booted that to see if the operation on the T43 was a success. As can be seen below it worked just fine. Well, sort of fine, but more on that in a moment.

Testbooting the flashdrive

Almost done now. I just needed to assemble the laptop again, leaving the USB Flash inside.

Ready to wrap up

Closing the lid on the laptop, securing all the screws I had myself a working IBM Thinkpad T43. Or so I thought. When I tested the laptop thoroughly I discovered that the kernel ring buffer was filled with

hub 2-0:1.0: over-current change on port 1
hub 2-0:1.0: over-current change on port 2

That cryptic message just states that the USB device is drawing more power than it is allowed to by the USB specification. Or more precisely that the port on the USB hub inside the laptop is delivering more power than it was supposed to. It first that puzzled me. Then I read about the USB connector and realized my fail. The 4 wires of the USB connector consists of  VCC, GND, Data+ and Data –. Given both VCC and GND was part of the 4 pins I only soldered 4 pins. After seeing the problems above, I investigated the matter and found a reference to OverCurrent (OC) protection on the header itself. I thus soldered the 5th pin and the problem went away.

I now had a working IBM Thinkpad T43 with 1GB of flash storage. What should I use it for? I decided to use it for puppy linux. Primarily for two reasons.

  1. It appeared to be tailor made for small harddrives
  2. I had never tried it before

I downloaded the 106MB large iso file and burned it onto a CDrom. Now I faced the problem of installing puppy linux onto my flash without using a cdrom drive (as I found the laptop without one). Puppy linux made it quite easy. Using another computer I booted the cdrom. Installed puppy onto a spare flash drive. Booted that flash drive in my IBM Thinkpad T43 and pressed “install” once more, installing it onto the “internal” flash drive.

Booted into puppy linux

All done. Actually it takes quite some time to boot the machine, but that is primarily due to the bios insisting on searching for a harddrive. Unfortunately the IBM BIOS lacks the option to stop it from doing that. After the system is loaded however, it is lightning fast. Way faster than my IBM Thinkpad T400. This is due to the fact that puppy linux loads everything into a ramdisk, so starting program does not require any moving parts to be ready. Programs starts instantaneously. The whole experience just proves (once more), that the computers of today is severely I/O limited, but hopefully SSD will change that real soon now(tm)

Updating system firmware on an IBM Thinkpad T43 using pxeboot

Friday, April 30th, 2010

Recently I got my hands on an IBM Thinkpad T43 without disk drive and cdrom (perfectly OK machine thrown out, apparently for no reason). I decided to update the firmware to the newest version before considering buying replacement parts for it.

So how do you update the firmware on an IBM Thinkpad without floppy or cdrom? You netboot it ofcourse. Needless to say these instructions might also work for other models. And finally: If you break your Thinkpad following these instructions I have no liability and you get to thank yourself and keep both parts!

With the standard disclaimer out of the way, lets start.

First I went to the excelent site where I located the latest bios. I then downloaded bios version 1.29 from Lenovo (Notice that two versions of the T43 exists and they are incompatible!)

I turned my attention to my linux server (ubuntu) and configured the dhcpd, tftpd and inetd to allow me to netboot using pxe. First off I installed the four needed utilities.

sudo apt-get install openbsd-inetd tftpd-hpa  dhcp3-server cabextract

When PXE booting a computer, it broadcasts for a lease from a DHCP server on the net. I configured my dhcpd server with the following besides the normal dhcpd options.

sudo vi /etc/dhcp3/dhcpd.conf
       host t43 {
                hardware ethernet 00:11:25:d6:ef:4b;
                filename "pxelinux.0";

You ofcourse have to change the hardware ethernet to the mac address of your Thinkpads ethernetcard. I saved the file and restarted dhcpd with

/etc/init.d/dhcp3-server restart

Next I configured inetd:

vi /etc/inetd.conf
tftp  dgram  udp  wait  root  /usr/sbin/in.tftpd -v -v -v -s /usr/lib/syslinux

Saved and restarted inetd

sudo /etc/init.d/openbsd-inetd

I then configured pxe with a config file that pxelinux.0 expects (your mac address will vary ofcourse) .

mkdir -p /usr/lib/syslinux/pxelinux.cfg
vi /usr/lib/syslinux/pxelinux.cfg/01-00-11-25-d6-ef-4b
DEFAULT t43firmware
LABEL t43firmware
        kernel memdisk
        append vga=normal initrd=flash/t43/70UJ29US.IMG --

Almost there. Next up, get the flash image ready

mkdir -p /usr/lib/syslinux/flash/t43
cd /usr/lib/syslinux/pxelinux.cfg

That got you an windows cabinetfile. Extract the firmware from that

cabextract -F 70UJ29US.IMG 70uj29us.exe
Extracting cabinet: 70uj29us.exe
  extracting 70UJ29US.IMG
All done, no errors.

I then powered up the T43. It booted over PXE

I pressed return and the flash program started:

I accepted the (many) warnings and disclaimers….. and

…. nothing happened! It just hung. I thought I had fried my newly aquired Thinkpad. I powered it off and on again just to see that it still worked, and that I was on the same BIOS level. Hmm, now what? It nearly worked, but still no cigar. I decided to take it one level further, doing it all by hand:

Mount the image file by hand using the loop driver:

sudo mkdir /floppy
sudo mkdir /floppy1
sudo mount -o loop /usr/lib/syslinux/flash/t43/70UJ29US.IMG /floppy

Get a standalone freedos boot image (called balder) from the nice guys at

cd /usr/lib/syslinux/flash/t43/
sudo mount -o loop /usr/lib/syslinux/flash/t43/balder10.img /floppy1

Remove a lot of files from balder10.img and copy files over from the IBM flash disk.

sudo rm /floppy1/{display.exe,edit.exe,dosfsck.exe,zip.exe,unzip.exe,\\
sudo cp /floppy/{\$0199000.fl1,06d*,chkbmp.exe,flash2.exe,lcreflsh.bat,logo.bat,\\
                 utilinfo.exe} /floppy1

# rename the flash file
sudo mv \$0199000.fl1 flash.img

# unmount floppy
sudo umount /floppy1/

Edit the pxe config file (your mac address will vary ofcourse) to use the balder/freedos image file instead of the Lenovo flash disk.

vi /usr/lib/syslinux/pxelinux.cfg/01-00-11-25-d6-ef-4b
DEFAULT t43firmware
LABEL t43firmware
        kernel memdisk
        append vga=normal initrd=flash/t43/balder10.img --

Reboot the T43 machine. Boot over PXE, single step (F8) the freedos start. Make sure you do NOT use EMS or HIMEM. After a brief period of time you should find yourself in an dos prompt, where you run

A:\phlash16.exe flash.img

The system should flash nicely and you should be all done within a minute:

Not for the faint of hearted, but I never promised that ;-)

Firewall in an ZynOS based xDSL router (ie. zyxel P660R-D1)

Tuesday, April 13th, 2010

I recently got xDSL from one of the major danish ISPs. I was very satisfied until I discovered that port 80 was closed. I looked high and low for a solution. Eventually I gave up and contacted the support, which confirmed my suspicion: the router had an firewall which blocked port 80.

The solution is actually quite straight forward:

wan node index 1
wan node filter incoming tcpip 256 256 256 256
wan node filter outgoing tcpip 256 256 256 256
wan node save

And now my blog is accessible for the outside world again.

Non-HP harddrives in an HP MSA20

Thursday, March 11th, 2010

A customer asked me if it was possible to use non-hp drives in an HP MSA20 as they costed a lot less than HPs own drives. I honestly said that it would require a POF. The customer accepted the initial expense of single 1TB SATA drive.  I fired up hpacucli to figure out what was up and down on this

=> ctrl ch="mirror" show config detail
physicaldrive 1:1
Box: 1
Bay: 1
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 1000.2 GB
Firmware Revision: HPG1
Serial Number: 9QJ2B4GD
Model: HP GB1000EAFJL
SATA NCQ Capable: False

As HP does not make harddrives, but uses OEM drives with custom firmware I had to figure out what types of drives was in there. The easiest solution would be to shut the box down and pull out a drive to inspect. Having dealt with HP quite a lot, I know that they also remark the drives, so I would probably not be able to see what types of drives was in there, leaving me with guessing if I choose to go that route.

Instead I opted for figuring out what type of drive it was likely to be based on the firmware.  I googled a bit and found that the MSA20 could support up to 1TB disks. A bit more googling yielded this advisory from HP about upgrading firmware on Seagate drives to HPG6. Based on the age of the MSA20 in question, the age of the 1TB HP disks we already had in them, I decided it was most likely to be Baracuda 7200.11 drives that HP utilized for this and thus we ordered one of those.
Drive arrived. We put it in. Rescanned and lo and behold:

physicaldrive 1:6
Box: 1
Bay: 6
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 1000.2 GB
Firmware Revision: CC38
Serial Number:             9VP4D0ZA
Model: Seagate ST31000528AS
SATA NCQ Capable: False

A non-HP drive working. We have now placed an order for 19 x 1TB Seagate drives.

Your millage may wary if you try this. It is also worth mentioning that it would be an option to test non-seagate disks and/or bigger disks. Beware of the heat and power requirements though! HP themselves only sells the MSA20 with upto 1TB disks.

Finally for the record, it should be state that this was on an MSA20 with this firmware level:

MSA20 in mirror
 Bus Interface: SCSI
 Serial Number: PAAAC0PMQTR7V0
 Chassis Serial Number: E01RMLJ17M
 Chassis Name: mirror
 RAID 6 (ADG) Status: Enabled
 Controller Status: OK
 Chassis Slot: 2
 Hardware Revision: Rev A
 Firmware Version: 2.08
 Rebuild Priority: Medium
 Expand Priority: Medium
 Surface Scan Delay: 3 secs
 Cache Board Present: True
 Cache Status: OK
 Accelerator Ratio: 50% Read / 50% Write
 Drive Write Cache: Disabled
 Read Cache Size: 56 MB
 Write Cache Size: 56 MB
 Total Cache Size: 112 MB
 Chassis Slot 2 Battery Info
 Battery Pack Count: 2
 Battery Status: OK
 Host Bus Adapter Slot: Slot Unknown
 Host Bus Adapter Port: 1
 SATA NCQ Supported: False

Linux (ubuntu Karmic Koala) on HP Elitebook 2530p

Saturday, October 24th, 2009

Finally got my new laptop (the old one served me well), an HP elitebook 2530p. I had my doubts on the ability to be able to get suppport for every piece of hardware in this laptop under Linux, but it was doable. Not without issues, but still fairly easy.

I opted for the latest ubuntu, Karmic Koala (9.10), which on the time of writting was release candidate. The installation went smoothly. The windows partition got resized without issues and after a few clicks on the next button the system was up and running. With encrypted ext4 filesystem and all.

Working without a hitch:

  • acpi (suspend, fan control, speedstep)
  • sound
  • graphic
  • wired network

Working with some debugging

  • Initially the wireless would not work with my wrt54g. It worked with other wifi hotspots. Symptoms were that the laptop could not a dhcplease from the router. Tried to flash the router with dd-wrt firmware instead of the tomato firmware. Did not help. Breakthrough came when I reset the router settings to “Default”. Then it worked with dd-wrt. I reflashed it with tomato and it still worked. So it is possible to enable “some setting” in the wrt54g router that cause problems with this laptop. My other laptops did not inhibit these issues. But then again. The laptop can not really be blamed.
  • My external Huawai E180 did not work. After some googling, it turned out to be a bug introduced in a specific kernel release.  The solution was to downgrade the kernel to a previous version. The only one available was 2.6.31-9-rt, which I choose and that works just fine.
  • The built-in Qualcomm Gobi 1000 3G module requires a firmware and a firmware loader to function. The firmware loader can be found here. It is just a little .c program and a set of udev rules. After that you will need the firmware. That can be obtained from your windows partition. If you do not have the driver for the windows environment it can be obtained from hp. The Gobi chipset is a fullblown arm cpu which can function as a 3G modem for various types of 3G nets. Different firmwares allows access to different networks. This piece of information gives an overiew. For my part I needed the 6. th version of the firmware as I live in Europe/Denmark.

All in all a couple of minor issues. I am really satisfied with this latop and the way Linux works on it. Will hopefully be a good laptop for me in the next couple of years.