Sony PCG-U3 and NetBSD

I’m not a serious collectionneur, but I like old micro notebooks. I have in my collection Compaq T1000, Fujitsu U810 and Sony PCG-U3. First two of them are bonded with the fully outdated software, available for Windows XP and Windows 7. Last one is a different case.

Description

Sony PCG-U3 was selling on Japanese market only circa 2002. It was designed for Windows XP. It is a quite compact kind of UMPC, i.e. ultra mobile personal computer, equipped with

  • Processor Transmeta Crusoe 5800, 933Mhz
  • RAM 256MB DDR
  • Video ATI Mobility Radeon-M 8MB (Dual View Capable)
  • Display TFT 6.4 (1024 x 768 internal, 1600 x 1200 external)
  • Hard Disk 20GB Ultra ATA
  • Audio Mega Bass with Theater sound and built in microphone
  • Keyboard 106/109 International Japanese keyboard
  • Mouse Jog Type: built in to keyboard
  • Ports/Slots (Built In) 2 x USB 1.0
  • 1 x iLink (1394 – 4 Pin) Firewire
  • 1 x LAN (RJ-45)
  • 1 x Biology U Port
  • 1 x Headphone Out (Mega Bass)
  • 1 x Microphone In
  • 1 x Magic Gate Memory Stick Slot
  • 1 x Type II PCMCIA
  • 1 x Jog Dial
  • 1 x Power Button
  • 1 x Display Port

So what to do with so outdated UMPC in 2024? There are three options: to sale it out on EBay, to put on a shelf and to gaze it or to try to use it with a maximum up-to-date software. The third way is a kind of challenge and I choose it.

Hardware notes

CPU. Every CPU must have a good cooling, especially a CPU born in 2002 about. There is a good YouTube video how to disassemble a younger brother of PCG-U3, i.e. PCG-U1, https://www.youtube.com/watch?v=cuVozDfhCCs. I did an extra work: I removed the CPU cooling system and cleaned up the CPU from old thermal yellow strip with isopropyl alcohol. Actually that wasn’t a simple plastic strip. That was a kind of strip had finished conversion into a dried stone like strip. After that new thermal paste was applied. A CPU fan was cleaned up from the dust as well.

Hard drive. By default PCG-U3 is equipped with Toshiba MK2003GAH 20G IDE drive. I got it old and clicking so offer, that thoughts about incoming drive dead came into my mind. How to upgrade it? I’m skeptical about CompactFlash card usage with a special CF to IDE adapter, taking into account very limited CF cards’ count of write cycles. SSD usage seems possible in a way: mSATA drive -> mSATA to ZIF adaptor -> ZIF to IDE cable, but I didn’t test it.
I think the best you can do is to upgrade default drive with Toshiba MK6006GAH 60G IDE drive. And I did it.

Video. ATI Technologies Radeon Mobility M6 LY is the full name of the video card. It’s an ancient built-in AGP video card with 8M of RAM and quite questionable driver support. Just for a note: only Sony Windows XP support CD disk provides correct Windows drivers for the video card. I got problems with the video card. It will described it later.

DVD and CD-ROM. It seems PCG-U3 supports external boot process from devices made by Sony only. I successfully tested boot from a PCGA-CRWD2 made-by-Sony Firewire cable-powered DVD & 20x CD-RW Drive. I’m pretty sure other drives like Firewire PCGA-DVRW1 and PCGA-DVD1 will be able to provide external boot as well. Most probably PCGA-CD51 Sony’s PC Card CD-ROM drive is compatible for external boot too. Important: I tested an average no-name USB DVD-ROM drive and PCG-U3 wasn’t able to boot from it.

Memory Stick reader. It’s was detected by any of the tested OS. Fortunately only Windows provides full read/write support.

Display port. It requires Mini-VGA to VGA adaptor to connect external display. Apple’s adapters from EBay are compatible with the PCG-U3 display port.

Biology U Port. Perhaps it’s a wrong English translation from Japanese. Whatever it means in original, in PCG-U3, it’s a port to connect a Sony made Firewire device without external power supply with a special port cable. No OS drivers are required.

Jog dial, jog mouse, built-in USB, built-in iee1394 adaptor, built-in network adaptor, PCMCIA slot, sound card. All this stuff was working with any of the tested OS.

Display. It seems DDC is presented and that’s good.

Operating system

This UMPC was born to run Windows XP. There are only 256M of RAM + possible installation of 256M extension card. Windows XP is out of support for years. From 202* years’ stand point Windows XP has problems with security.

My target was a 32-bit OS, running on no-PAE CPU, still having community support, relatively fresh, providing maximum, for this umpc hardware, support and 256M of RAM should be enough to run it.

What operating system to choose? I had no wish to choose any of Windows: it will be either outdated or slow. No wish to use any one of OS/2 family, even a fresh variant as ArcaOS. I just don’t like all that 32-bit DOS mixture stuff. Kolibri OS? An OS written in assembler. It works. It is fast. But it can’t manage CPU frequency. I got constant hot cooling fan air when Kolibri OS was running on PCG-U3. Moreover Kolibri OS has no ssh client. It’s critical for me. Not all hardware are supported as well. Available software is very limited. So not a KolibriOS. Haiku OS? It’s a fresh version of BeOS. 32-bit version requires PAE extension. So not a Haiku OS. Thus it should be ether OS from Linux or *BSD families.

Linux. There are only two variants: Gentoo (any release) or Debian 8. I have no patience to build OS from scratch on so slow CPU, so Gentoo is not my choice. Debian 8 is relatively fresh. I installed it on PCG-U3 successfully, but after that I wasn’t able to set up X server to start up it correct. All I got it was a white blank screen in vesa mode. So Debian wasn’t chosen.

BSD family. Which one? FreeBSD? Last one with no-PAE support was v. 12. Installation is quite complicated and it requires presence of boot CD-ROM and boot USB flash. After installation Firewire adaptor wasn’t detected. All binary ports were removed from FreeBSD repository since Jan 1, 2024. So not a FreeBSD. OpenBSD? It seems to me 32-bit architecture support is sporadical in this project nowadays and it was limited by outdated v.4 version only. NetBSD? Version 9.3 was released on August 22, 2022. It’s quite fresh. Upcoming version 10 promises to continue 32-bit support. Let’s try it.

NetBSD 9.3 i386

PCG-U3 can run NetBSD 9.* and 10.* families and most of PCG-U3 hardware are supported. Installation is quite straight and simple if you’re an intermediate UNIX user at least , i.e.

  • burn NetBSD bootable CD or DVD
  • boot from the bootable disk
  • follow the document https://www.netbsd.org/docs/guide/en/chap-exinst.html

How it looks like

Screenshots are taken in 800×600 resolution. All whistles and bangles you see below are not out-of-the-box. It’s a deep customization.

BIOS

“Plug & Play O/S” option must be chosen as “NO” on “Advanced” page . Otherwise poweroff command leads to kernel panic and reboot.


Additional hardware I use

  • USB 2.0 cardbus adapter Adaptect AHA-1420A(*)
  • USB 2.0 cardbus adapter Area SD-CBU2-Z1(*)
  • 10/100 Ethernet cardbus adapter Buffalo LPC5-CLX-C8(*)
  • WIFI cardbus adapter 3Com 3CRXJK10075(*)
  • WIFI USB adapter Buffalo WLI-UC-GN(*)
  • Bluetooth adapter ASUS USB-BT400(*)
  • USB soundcard Creative Sound Blaster PLAY! 3(*)
  • Magneto-optical Firewire drive FUJITSU MDF3130EE(*)
  • CD-RW/DVD Firewire drive Sony PCGA-CRWD2(*)
  • Apple 603-0607 Mini-VGA to VGA adapter(*)
  • USB security token YubiKey 5C

* – right out-of-the-box drivers

List of all attached PCI devices including USB cardbus adapter from the OS stand point

[19:34] user@hostname:~
$ pcictl pci0 list
000:00:0: Transmeta LongRun North Bridge (host bridge, revision 0x03)
000:00:1: Transmeta SDRAM Controller (RAM memory)
000:00:2: Transmeta BIOS Scratchpad (RAM memory)
000:06:0: Acer Labs M5451 AC-Link Controller Audio Device (audio multimedia, revision 0x02)
000:07:0: Acer Labs M1533 PCI-ISA Bridge (ISA bridge)
000:09:0: Texas Instruments TSB43AA22/A IEEE 1394 Host Controller (IEEE1394 serial bus, OpenHCI)
000:11:0: Realtek Semiconductor 8139 10/100 Ethernet (ethernet network, revision 0x10)
000:12:0: ATI Technologies Radeon Mobility M6 LY (VGA display)
000:15:0: Acer Labs M5237 USB 1.1 Host Controller (USB serial bus, OHCI, revision 0x03)
000:16:0: Acer Labs M5229 UDMA IDE Controller (IDE mass storage, interface 0xe0, revision 0xc4)
000:17:0: Acer Labs M7101 Power Management Controller (miscellaneous prehistoric)
000:18:0: Ricoh 5C475 PCI-CardBus Bridge (CardBus bridge, revision 0x80)
000:20:0: Acer Labs M5237 USB 1.1 Host Controller (USB serial bus, OHCI, revision 0x03)
001:00:0: NEC USB Host Controller (USB serial bus, OHCI, revision 0x43)
001:00:1: NEC USB Host Controller (USB serial bus, OHCI, revision 0x43)
001:00:2: NEC USB2 Host Controller (USB serial bus, EHCI, revision 0x04)

Software on the screenshots

  • XDM – X login manager
  • WBar – quick-launch tool bar on the bottoms
  • GKRellm – CPU, RAM, Disk, Ethernet activity monitor
  • JWM – window manager and panel
  • LXDE – desktop environment

Memory consumption and CPU load right after logon to LXDE

load averages:  0.45,  0.30,  0.26;               up 0+03:11:34                                                                                      18:43:00
50 processes: 49 sleeping, 1 on CPU
CPU states: 2.3% user, 0.0% nice, 0.3% system, 0.3% interrupt, 97.3% idle
Memory: 183M Act, 484K Inact, 11M Wired, 51M Exec, 77M File, 218M Free
Swap: 2048M Total, 2048M Free

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
1756 user 85 0 8008K 3244K wait 0:00 3.90% 2.15% bash
2107 root 85 0 15M 5884K select 0:01 2.19% 1.56% sshd
1761 user 42 0 36M 16M parked 0:42 0.34% 0.34% gkrellm
0 root 96 0 0K 30M smtaskq 5:34 0.00% 0.00% [system]
535 root 85 0 128M 40M select 2:16 0.00% 0.00% X
486 root 85 0 16M 2340K nanoslp 1:29 0.00% 0.00% pcscd
2065 user 43 0 40M 16M parked 0:14 0.00% 0.00% jwm
442 root 85 0 11M 11M pause 0:10 0.00% 0.00% ntpd
1167 user 85 0 76M 27M select 0:09 0.00% 0.00% pcmanfm
549 root 85 0 17M 8132K wait 0:02 0.00% 0.00% xdm
975 user 85 0 14M 4356K select 0:02 0.00% 0.00% sshd
973 user 85 0 6900K 2168K select 0:02 0.00% 0.00% top
1568 user 84 0 37M 11M select 0:02 0.00% 0.00% lxsession
2117 root 85 0 14M 5880K select 0:01 0.00% 0.00% sshd
1368 user 85 0 20M 5528K select 0:01 0.00% 0.00% gvfsd-trash
670 user 85 0 14M 4356K select 0:01 0.00% 0.00% sshd
1598 user 85 0 7776K 2268K nanoslp 0:01 0.00% 0.00% xautolock
1387 user 84 0 33M 9036K select 0:01 0.00% 0.00% lxclipboard
2079 root 84 0 14M 5772K select 0:01 0.00% 0.00% sshd
516 root 84 0 14M 5684K select 0:01 0.00% 0.00% sshd
1497 user 83 0 17M 10M select 0:01 0.00% 0.00% wbar
725 user 83 0 7776K 3232K wait 0:01 0.00% 0.00% bash
2292 user 43 0 7092K 2164K CPU 0:00 0.00% 0.00% top
2102 user 85 0 15M 4284K select 0:00 0.00% 0.00% sshd

xorg.conf file

You need to create it manually if you don’t want to use VESA mode

Section "Device"
Identifier "Card0"
Driver "radeon" <<-- exactly this driver must be used
Option "BusType" "PCI"
Option "DPI" "96 x 96"

Next step is to replace default radeon driver file with the old one. A working example:

[20:01] user@hostname:/usr/X11R7/lib/modules/drivers
$ ls -la | grep radeon
lrwxr-xr-x 1 root wheel 19 Feb 4 10:03 radeon_drv.so -> radeon_drv_old.so.6
-r--r--r-- 1 root wheel 517804 Aug 4 2022 radeon_drv.so.19_new
lrwxr-xr-x 1 root wheel 19 Aug 4 2022 radeon_drv_old.so -> radeon_drv_old.so.6
-r--r--r-- 1 root wheel 1107556 Aug 4 2022 radeon_drv_old.so.6

to reach the target

[20:04] user@hostname:/var/log
$ more Xorg.0.log | grep -i radeon
[ 86.303] (II) LoadModule: "radeon"
[ 86.307] (II) Loading /usr/X11R7/lib/modules/drivers/radeon_drv.so
[ 86.382] (II) Module radeon: vendor="X.Org Foundation"
[ 86.445] (II) RADEON: Driver for ATI Radeon chipsets:
...
ATI Radeon X850 PRO (R480) (AGP), ATI Radeon X850 XT PE (R480) (AGP),
ATI Radeon Mobility M7 LW (AGP),
ATI Radeon Mobility M6 LY (AGP)
ATI Radeon Mobility 9000 (M9) Lf (AGP),
...
[ 86.693] (II) RADEON(0): TOTO SAYS 00000000e8000000
[ 86.695] (II) RADEON(0): MMIO registers at 0x00000000e8000000: size 64KB
[ 86.701] (II) RADEON(0): PCI bus 0 card 12 func 0
[ 86.713] (**) RADEON(0): Depth 24, (--) framebuffer bpp 32
[ 86.713] (II) RADEON(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps)
[ 86.713] (==) RADEON(0): Default visual is TrueColor
[ 86.715] (**) RADEON(0): Option "SWcursor" "off"
[ 86.716] (**) RADEON(0): Option "BusType" "PCI"
[ 86.716] (**) RADEON(0): Option "AGPMode" "4"
[ 86.717] (**) RADEON(0): Option "AGPFastWrite" "on"
[ 86.717] (**) RADEON(0): Option "EnablePageFlip" "on"
[ 86.717] (**) RADEON(0): Option "RenderAccel" "on"
[ 86.719] (**) RADEON(0): Option "AccelMethod" "XAA"
[ 86.746] (II) RADEON(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0
[ 86.748] (==) RADEON(0): RGB weight 888
[ 86.749] (II) RADEON(0): Using 8 bits per RGB (8 bit DAC)
[ 86.749] (--) RADEON(0): Chipset: "ATI Radeon Mobility M6 LY (AGP)" (ChipID = 0x4c59)
[ 86.750] (--) RADEON(0): Linear framebuffer at 0x00000000f0000000
[ 86.750] (II) RADEON(0): PCI card detected
[ 86.750] (**) RADEON(0): Forced into PCI mode
[ 86.759] (II) RADEON(0): initializing int10
[ 86.775] (II) RADEON(0): Primary V_BIOS segment is: 0xc000
[ 86.801] (II) RADEON(0): Legacy BIOS detected
[ 86.819] (II) RADEON(0): Detected total video RAM=8192K, accessible=65536K (PCI BAR=131072K)
[ 86.820] (--) RADEON(0): Mapped VideoRAM: 8192 kByte (32 bit DDR SDRAM)
[ 86.820] (II) RADEON(0): Color tiling enabled by default
[ 86.826] (II) RADEON(0): ref_freq: 2700, min_out_pll: 12000, max_out_pll: 35000, min_in_pll: 40, max_in_pll: 3000, xclk: 16600, sclk: 166.000000, mclk: 166.000000
[ 86.826] (II) RADEON(0): PLL parameters: rf=2700 rd=60 min=12000 max=35000; xclk=16600
[ 86.830] (II) RADEON(0): Panel ID string: 1024x768
[ 86.830] (II) RADEON(0): Panel Size from BIOS: 1024x768
[ 86.830] (II) RADEON(0): BIOS provided dividers will be used.
[ 86.832] (WW) RADEON(0): LVDS Info:
[ 86.832] (WW) RADEON(0): LCD DDC Info Table found!
[ 86.833] (II) RADEON(0): Output VGA-0 using monitor section Monitor0
[ 86.844] (II) RADEON(0): I2C bus "VGA-0" initialized.
[ 86.845] (II) RADEON(0): Output LVDS has no monitor section
[ 86.846] (II) RADEON(0): I2C bus "LVDS" initialized.
[ 86.846] (II) RADEON(0): Output S-video has no monitor section
[ 86.846] (II) RADEON(0): Default TV standard: NTSC
[ 86.846] (II) RADEON(0): TV standards supported by chip: NTSC PAL
[ 86.848] (II) RADEON(0): Port0:
[ 86.849] (II) RADEON(0): Port1:
[ 86.850] (II) RADEON(0): Port2:
[ 86.854] (II) RADEON(0): I2C device "VGA-0:ddc2" registered at address 0xA0.
[ 86.944] (II) RADEON(0): Output: VGA-0, Detected Monitor Type: 0
[ 86.945] (II) RADEON(0): I2C device "LVDS:ddc2" registered at address 0xA0.
[ 86.949] (II) RADEON(0): Output: LVDS, Detected Monitor Type: 2
[ 86.950] (II) RADEON(0): Output: S-video, Detected Monitor Type: 0
[ 87.036] (II) RADEON(0): Output: VGA-0, Detected Monitor Type: 0
[ 87.039] (II) RADEON(0): EDID for output VGA-0
[ 87.088] (II) RADEON(0): Output: LVDS, Detected Monitor Type: 2
[ 87.145] (II) RADEON(0): Added native panel mode: 1024x768
[ 87.146] (II) RADEON(0): Printing probed modes for output LVDS
[ 87.147] (II) RADEON(0): Modeline "800x600"x59.9 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync (37.4 kHz UeP)
[ 87.147] (II) RADEON(0): Modeline "1024x768"x60.0 65.00 1024 1040 1176 1344 768 770 776 806 (48.4 kHz eP)
[ 87.148] (II) RADEON(0): Modeline "640x480"x59.4 23.75 640 664 720 800 480 483 487 500 -hsync +vsync (29.7 kHz e)
[ 87.148] (II) RADEON(0): Output: S-video, Detected Monitor Type: 0
[ 87.149] (II) RADEON(0): EDID for output S-video
[ 87.149] (II) RADEON(0): Output VGA-0 disconnected
[ 87.149] (II) RADEON(0): Output LVDS connected
[ 87.149] (II) RADEON(0): Output S-video disconnected
[ 87.150] (II) RADEON(0): Using user preference for initial modes
[ 87.150] (II) RADEON(0): Output LVDS using initial mode 800x600 +0+0
[ 87.151] (==) RADEON(0): DPI set to (96, 96)
[ 87.225] (==) RADEON(0): Using gamma correction (1.0, 1.0, 1.0)
[ 87.226] (==) RADEON(0): Using EXA acceleration architecture
[ 87.289] (==) RADEON(0): Assuming overlay scaler buffer width is 1536
[ 87.289] (II) RADEON(0): No MM_TABLE found - assuming CARD is not TV-in capable.
[ 87.291] (!!) RADEON(0): MergedFB support has been removed and replaced with xrandr 1.2 support
[ 87.363] (II) RADEON(0): RADEONScreenInit f0000000 0 0
[ 88.045] (II) RADEON(0): Dynamic Power Management Disabled
[ 88.106] (II) RADEON(0): RADEONInitMemoryMap() :
[ 88.107] (II) RADEON(0): mem_size : 0x04000000
[ 88.107] (II) RADEON(0): MC_FB_LOCATION : 0xf3fff000
[ 88.107] (II) RADEON(0): MC_AGP_LOCATION : 0xffffffc0
[ 88.107] (II) RADEON(0): Depth moves disabled by default
[ 88.147] (II) RADEON(0): Allocating from a screen of 8192 kb
[ 88.148] (II) RADEON(0): Will use 32 kb for hardware cursor 0 at offset 0x00400000
[ 88.148] (II) RADEON(0): Will use 32 kb for hardware cursor 1 at offset 0x00404000
[ 88.149] (II) RADEON(0): Will use 4096 kb for front buffer at offset 0x00000000
[ 88.149] (II) RADEON(0): Will use 4064 kb for X Server offscreen at offset 0x00408000
[ 88.200] (II) RADEON(0): RADEONRestoreMemMapRegisters() :
[ 88.200] (II) RADEON(0): MC_FB_LOCATION : 0xf3fff000 0xffff0000
[ 88.200] (II) RADEON(0): MC_AGP_LOCATION : 0xffffffc0
[ 88.934] (==) RADEON(0): Backing store enabled
[ 88.935] (WW) RADEON(0): Direct rendering disabled <<-- pitty :(
[ 88.950] (II) RADEON(0): Render acceleration enabled for R100 type cards.
[ 88.950] (II) RADEON(0): Setting EXA maxPitchBytes
[ 89.013] (II) RADEON(0): Acceleration enabled
[ 89.013] (==) RADEON(0): DPMS enabled
[ 89.013] (==) RADEON(0): Silken mouse enabled
[ 89.165] (II) RADEON(0): Detected Radeon Mobility M6, disabling multimedia i2c
[ 89.175] (EE) RADEON: Failed to load module "theatre_detect" (module does not exist, 0)
[ 89.175] (EE) RADEON(0): Unable to load Rage Theatre detect module
[ 89.179] (II) RADEON(0): Set up overlay video
[ 89.181] (II) RADEON(0): Set up textured video
[ 89.207] (II) RADEON(0): [XvMC] Associated with Radeon Textured Video.
[ 89.207] (II) RADEON(0): [XvMC] Extension initialized.
[ 89.576] (II) RADEON(0): RADEONRestoreMemMapRegisters() :
[ 89.576] (II) RADEON(0): MC_FB_LOCATION : 0xf3fff000 0xf3fff000
[ 89.576] (II) RADEON(0): MC_AGP_LOCATION : 0xffffffc0
[ 89.907] (WW) RADEON(0): Option "DPI" is not used
[ 89.907] (WW) RADEON(0): Option "DynamicClocks" is not used
[ 89.908] (WW) RADEON(0): Option "BIOSHotkeys" is not used
[ 89.908] (WW) RADEON(0): Option "DDCMode" is not used
[ 96.587] (II) RADEON(0): Setting screen physical size to 211 x 158

Keyboard

As you can see PCG-U3 is equipped with a Japanese layout keyboard. So for X Window system

$ setxkbmap -model jp106 -layout jp

and for console

$ echo 'encoding jp' >> /etc/wscons.conf