Subscribe via RSS
2Sep/2112

IBM 45U0018 POS Keyboard

I saw this unit on eBay and couldn't resist. It really did remind me of the department store POS keyboards and I remember them being clicky. I checked the photos on the auction and saw that it had a non-standard socket and no cable included. You can download the drivers/configuration-utility here.

DSC04101

DSC04081 DSC04082 DSC04083

DSC04089 DSC04086 DSC04096

DSC04100

The main keys are fixed, but the surrounding keys have optional translucent key 'covers' where inserts have been placed for special functions. Some of them even cover standard keyboard keys.

DSC04103

But yeah, back to the socket, and do excuse the photo...

DSC04099

It's very similar to a standard IDC Header, but in-set which makes it really difficult to use anything other than IBM's proprietary cables. After a lot of googling, I found that there's both a USB and PS/2 cable version available.

cable-options

Unfortunately, these weren't actually available anywhere... and if they were, the cost was out of control. It seems that these keyboards could also just dock onto the POS system above the till, so it's possible that the cable was only required if you wanted to mount the keyboard elsewhere. Anyway, a cable would be too easy... I'm sure we can work this out!

What does it look like on the inside?

With the hunch that the port supported PS/2 and USB, the keyboard was opened to work out the pinout. Opening it was actually very easy with just 6 small screws on the back. A large plate comes off and then there's just a bit of foil-cardboard shielding over the main circuit board.

DSC04061

Inside, of note, were a TUSB2046B IC and a STM32F103VBT6 Microcontroller with V0326_PF.bin programmed into it. The first IC happens to be the brains for a USB 4-port hub and provided a huge hint for determining the unit's wiring. I started tracing along the pins and the table below is the result.

ibmplug

Note that, when looking at the back of the keyboard into the socket when the keyboard is UPSIDE-DOWN on a flat surface, I've started Pin 1 from the top-right, with pin 6 then being top-left, pin 7 bottom-right and pin 12 bottom-left. This turned out to be silly as all the wires are in vertical pairs. Note this has been updated from the great resource at sharktastica.

Pin # Connected To Notes USB Cable
1 Pin 1 of T-46 aka TPS73633DBV Voltage supply for the power regulator. Must be 5v! Pin 1 - Red
2 Pin 1 of TUSB2046B DP0 = Root port USB differential data plus. DP0 paired with DM0 constitutes the upstream USB port. Pin 3 - Green
3 NC?
4 Pin 3 (or 6) of U4 U4 is not populated.
5 Pin 64 (PC7) of STM32F103VBT6 Microcontroller PS/2 Keyboard Clock
6 Pin 48 (PB11) of STM32F103VBT6 Microcontroller PS/2 Mouse Clock
7 GND Pin 4 - Black
8 Pin 2 of TUSB2046B DMO = Root port USB differential data minus. DM0 paired with DP0 constitutes the upstream USB port. Pin 2 - White
9 NC?
10 Pin 2 (or 7) of U4 U4 is not populated.
11 Pin 66 (PC9) of STM32F103VBT6 Microcontroller PS/2 Keyboard Data
12 Pin 52 (PB13) of STM32F103VBT6 Microcontroller PS/2 Mouse Data

Ok, so that's easy for the USB connection.. just wire the 'upstream' pins, +5v and GND into a spare USB cable. The other 2-pair of wires which run into the Microcontroller must be for the PS/2 mouse and keyboard? I wonder which is clock and which is data? There are plenty of images online showing microcontroller-to-PS/2-port hookups, so I'll try that after USB.

Hooking Up USB

USB cables contain 4 wires. First you need two wires for a very standard 5v DC rail and then you need two more wires to transmit and receive data. As you can see from the table above, we have all of these already mapped out. This was all very straight-forward thanks to the documentation for the TUSB2046B USB Root Hub IC. I grabbed a bunch of spare parts from the box'o'junk and started wiring something together. The USB cables I first tried to use happened to be power-only? No data lines! No wonder someone else threw them out.

DSC04065 DSC04070 DSC04071

Too short anyway! So instead, I remembered I had a mini USB socket in another tray'o'junk and set to wiring that up...

DSC04064 DSC04075 DSC04077

I plugged it into my RasPi 400 and it evicted all USB devices...

Sep  2 17:04:30 raspberrypi kernel: [63187.047153] usb usb2-port1: over-current change #1
Sep  2 17:04:30 raspberrypi kernel: [63187.202027] usb 1-1-port1: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.278524] usb usb2-port2: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.438880] usb 1-1-port2: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.518607] usb usb2-port3: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.678902] usb 1-1-port3: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.758546] usb usb2-port4: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.918864] usb 1-1-port4: over-current change #1
Sep  2 17:04:31 raspberrypi kernel: [63187.998562] usb usb2-port1: over-current change #2
Sep  2 17:04:32 raspberrypi kernel: [63188.238478] usb usb2-port2: over-current change #2
Sep  2 17:04:32 raspberrypi kernel: [63188.478480] usb usb2-port3: over-current change #2
Sep  2 17:04:32 raspberrypi kernel: [63188.718503] usb usb2-port4: over-current change #2
Sep  2 17:04:32 raspberrypi kernel: [63188.890074] usb 1-1-port1: over-current change #2

Ooops! Why am I chewing too much power? I google'd around and couldn't find an easy solution to inject my own power, as all answers indicated VCC needed to stay connected. Looking at my wiring again, I realised that this error was bound to happen as I'd wired the polarity around the wrong way! So, after correcting that...

Sep  2 18:44:47 raspberrypi kernel: [69203.309095] usb 1-1.3: new full-speed USB device number 9 using xhci_hcd
Sep  2 18:44:47 raspberrypi kernel: [69203.443182] usb 1-1.3: New USB device found, idVendor=0451, idProduct=2046, bcdDevice= 1.25
Sep  2 18:44:47 raspberrypi kernel: [69203.443193] usb 1-1.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Sep  2 18:44:47 raspberrypi kernel: [69203.449815] hub 1-1.3:1.0: USB hub found
Sep  2 18:44:47 raspberrypi kernel: [69203.452677] hub 1-1.3:1.0: 4 ports detected
Sep  2 18:44:47 raspberrypi kernel: [69203.779047] usb 1-1.3.4: new full-speed USB device number 10 using xhci_hcd
Sep  2 18:44:47 raspberrypi kernel: [69203.922725] usb 1-1.3.4: New USB device found, idVendor=04b3, idProduct=4604, bcdDevice= 3.26
Sep  2 18:44:47 raspberrypi kernel: [69203.922734] usb 1-1.3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Sep  2 18:44:47 raspberrypi kernel: [69203.922741] usb 1-1.3.4: Product: IBM Retail USB Alphanumeric POS Keyboard                                     
Sep  2 18:44:47 raspberrypi kernel: [69203.922747] usb 1-1.3.4: Manufacturer: (c) Copyright IBM Corp. 2008
Sep  2 18:44:47 raspberrypi kernel: [69203.922752] usb 1-1.3.4: SerialNumber: 44T4011-200811231006420977000036
Sep  2 18:44:47 raspberrypi kernel: [69203.935428] input: (c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard                                      as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4:1.0/0003:04B3:4604.000D/input/input18
Sep  2 18:44:47 raspberrypi kernel: [69204.000545] hid-generic 0003:04B3:4604.000D: input,hidraw4: USB HID v1.00 Keyboard [(c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard] on usb-0000:01:00.0-1.3.4/input0
Sep  2 18:44:47 raspberrypi kernel: [69204.008558] hid-generic 0003:04B3:4604.000E: hiddev97,hidraw5: USB HID v1.00 Device [(c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard] on usb-0000:01:00.0-1.3.4/input1
Sep  2 18:44:47 raspberrypi kernel: [69204.016919] hid-generic 0003:04B3:4604.000F: hiddev98,hidraw6: USB HID v1.00 Device [(c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard] on usb-0000:01:00.0-1.3.4/input2
Sep  2 18:44:47 raspberrypi kernel: [69204.035363] input: (c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard                                      as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4:1.5/0003:04B3:4604.0010/input/input19
Sep  2 18:44:47 raspberrypi kernel: [69204.036075] hid-generic 0003:04B3:4604.0010: input,hidraw7: USB HID v1.00 Mouse [(c) Copyright IBM Corp. 2008 IBM Retail USB Alphanumeric POS Keyboard] on usb-0000:01:00.0-1.3.4/input5
Sep  2 18:44:47 raspberrypi mtp-probe: checking bus 1, device 10: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3.4"
Sep  2 18:44:47 raspberrypi mtp-probe: bus: 1, device: 10 was not an MTP device
Sep  2 18:44:48 raspberrypi mtp-probe: checking bus 1, device 10: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3.4"
Sep  2 18:44:48 raspberrypi mtp-probe: bus: 1, device: 10 was not an MTP device

DSC04097

HAHA. It just worked. It's very loosely-clicky, but not bad at all. Hilariously sounds like the registers at David Jones. The trackpad and touchpoint actually work beautifully as well. Very impressive. I assume there's further commands that could be sent to change LEDs, use the peripherals, but I don't need it.

PS/2 Wiring

I didn't feel like plugging this into a PC and restarting it 17 times to work out the wiring, so I used an Arduino Uno instead! Unfortunately, no combination of pairs would get the unit to produce any output. I'll have to do some more digging at some point in the future... a cop-out, I know, but I'm happy with USB for now!

UPDATE: There's a pinout here at sharktastica.

Printing a proper plug

I searched Thingiverse and found a very nice set of IDC Plug Frames. I then dragged that frame into Tinkercad and stretched it to make it fit better. The result is here.

IBM keyboard plug

From there, I used standard 'single' jumper wires to build the 6x2 inner plug and glued them in place. I then soldered up a spare USB cable.

20220315 173505 20220315 173756 20220315 174413

Perfect! Note there's still plenty of these keyboards on eBay from a WA seller. Highly recommended!

Filed under: Retro 12 Comments
1Sep/210

Dual Technologies SKD-4000

This beauty had been doing laps on eBay for a while. I had tried to low-ball it early on, only to receive a swift declination. A week or two later, I offered a little more and it was accepted! The seller took no time to send it to me, perfectly packed. It was listed as untested and with a cracked front-right case. Indeed it was, with one of the plastic clips actually hanging out the front of the opposing top-half, looking slightly like a buck-tooth.

DSC03857

DSC03829 DSC03831 DSC03833

DSC03840 DSC03839 DSC03843

DSC03851 DSC03853 DSC03854

DSC03856

After a little googlin', I came across a site talking about a slightly different version to this laptop. Turns out Dual Group were a Taiwanese manufacturer and built laptops that were then re-branded and on-sold. They therefore didn't really have their own site with any relevant info on this laptop. If anyone manages to find any information on this laptop, then please get in touch in the comments section! I therefore kept inspecting the unit, disassembling what I could prior to needing a screwdriver.

DSC03858

DSC03859 DSC03870 DSC03865

This unit didn't have a power supply, but thankfully the link above provided a pinout for the power supply their SKD-4000 needed. Under this unit, it stated it needed DC 20v @ 1.0A, so I tinned up a set of power wires and dialed in the voltage.

DSC03872 DSC03873 DSC03874

DSC03877

Jamming the wires in the power socket, after continuity-testing for GND, I flicked the power switch... lo'an'behold: the full orchestra of a vintage HDD and a POST beep!

DSC03880 DSC03883 DSC03886

The joy was very short-lived though... the BIOS quickly reported a low battery and incorrect date/time. Hardly surprising! I went into the BIOS anyway and did a HDD auto-detect.

DSC03894 DSC03895 DSC03890

DSC03896 DSC03891 DSC03893

116mb, nice! I saved the config and rebooted, but nothing seemed to have stuck. Seems I'll need to replace the battery to get further. Before that though, does VGA out work?

DSC03898

Nice! Ok, back to the CMOS battery. The link above provided a tear-down guide to help me, but in the end I didn't really need it as this laptop was surprising easy to open and work with! Even the CPU had a flap for easy access? It also has DIP switches for setting the CPU and they seem to configure the CPU pins directly? I'll try and decode them shortly.

DSC03904

The CMOS battery is a piece of work. It's hard-soldered in and it happens to be a rechargeable coin-cell. These are pretty rare nowadays... and... stupid me... I just tried to solder in a coin-cell holder and use a CR2032. DO NOT TRY AND USE NON-RECHARGEABLE BATTERIES IN-PLACE OF RECHARGEABLE BATTERIES!

DSC03929 DSC03948 DSC03958

Turning the unit on saw the coin-cell heat up rapidly, but fortunately I had my finger on the power switch, ready to prevent any spontaneous combustion. I then tried a 3.7v cell I had lying around, but the laptop started reporting 10 error beeps indicating that no battery was available at all. I really do hope I haven't trashed the charging circuit. At this point, I ordered an exact replacement Panasonic VL2330 battery and then looked for other things to fix up.

Power Plug

Whilst waiting for a battery to arrive, I realised I should solidify the power supply. Seems this type of plug is called a SnapNLock 4-Pin Mini DIN and I was pleased to see it available at Jaycar. I purchased a few (luckily) and attempted to wire one up. Soldering it was easy enough, but assembling it was next-level.

DSC03971

I mean, just look at the datasheet (which, actually, wasn't even east to find!), and you'll see what I mean... 8 components to jam together in a not-so-obvious order. I trashed the first plug and sorta-but-not-really succeeded with the second plug... it was good enough to test with.

Dip-Switch Dissection...

There are two blocks of four switches and, with no documentation, I set about trying to determine what these might control. Looking at the set closest to the CPU first, one can find the traces run off CPU pins.

DSC03975

Thanks to the glory of the internet, one can find pin maps and descriptions of pins readily available. The latter doesn't go into much detail, so actual CPU datasheets can also come in handy. After a little digging, it seems this block of switches controls maths error handling and interrupt line access to the CPU. I might just leave them as-is.

Dip-switch Name Solderable-jumper name Connected CPU Pin Pin Function
JP1-1 JP44 B15 NMI - Non-Maskable Interrupt
JP1-2 JP41 Can't tell... but seems to toggle the signal from JP1-1 through to JP3.
JP1-3 JP42 A15 IGNNE# - Ignore numeric error
JP1-4 JP43 C14 FERR# - Floating Point Error

The second block's traces disappear into the board's layers and are impossible to trace and understand.

The BIOS

Just for fun, I popped out the PLCC32 and read it in my Willem Programmer.

DSC03972

You can download the BIN file here.

Back to that Battery

A proper Panasonic VL2330 arrived and I soldered it in place. Applying power heard the same beeping. Ok, let's follow the traces to the left and see what's going on... two diodes, both seem to conduct power... then the voltage goes into pin 20 of that IC... with no marking? Why no marking?

DSC04002

Under the right light, it turned out to be an Epson RTC-6593 Real-time Clock. It even has integrated battery-backed RAM! Of course, this unit stores my BIOS settings. Why has the label disappeared? It's COOKED! It tried to burn me when I touched it. We can only assume it's due to my testing of other batteries... if only I'd bought the correct replacement at the start.

Replacing the RTC

So, I'm game to try this... what I'm not game for is fake chips! Searching for this IC has only come up with seemingly-dodgy sellers on Alibaba and eBay. I've just thrown in a few orders and we'll see what comes back. In the meantime I've removed the existing IC and cleaned up the area. Interesting to note that the silk-screen shows the IC should be an RTC-6583, whereas a 6593 was installed. The datasheet seems to indicate that 659x has "Extended Alarms" whereas 658x doesn't.

DSC04005

During removal of the chip, I just happened to remove a pad... I blame the fact that the IC was actually glued down to the board! I couldn't work out why the IC wouldn't move, regardless of the pressure I applied. Furtunately, it was a quick fix with winding wire and it's ready to solder up.

DSC04011 DSC04014 DSC04020

I'll post a Part II once the ICs have arrived.

Filed under: Retro No Comments
4May/210

Mega Drive Circuit Board Repairs

A bunch of Sega Mega Drives came via the workbench recently, all looking for a 50/60hz mod and region unlocking. Two older Mega Drive 1s were in the batch and the first modded with zero concern. Unfortunately, the second wouldn't even boot... a quick opening of the case saw the reason:

210420175211377

This area of the circuit board is easily accessible from the cartridge slot and I can only assume that a screwdriver (or other sharp object) has been jammed in at some point, destroying a few traces. You'll also notice solder to the left, but that was me in a previous attempt to repair this. I tried again as I now have a USB Microscope and it really does work well for reviewing damage and making intricate repairs!

How not to repair it

I first-up thought I'd be able to use copper winding wire and simply solder to each pad where the IC contacts the circuit board.

210420182637721 210420182556394 210420182604906

210420182616201

From the shots above, you can see how quickly that process failed. The combination of using a soldering iron under a microscope, a large soldering tip and shakey hands meant that solder spread everywhere. Fortunately, solder wick cleaned all that up in no time.

Also how not to repair it

The next method was a little dodgy, but proved successful. From above, I knew i needed more room to solder, so the goal was to create this room by lifting and spreading the pins and running wires to the other end of the traces.

210420184735028

A multimeter found the other end of the traces and winding wire was attached.

210420182842266

Thanks to the tiny tweezers in the iFixit kit, I was able to bend, lift and then straighten the leftmost leg.

210420183049993

From there, the other legs were lifted easily.

210420183502119

Finally, they were all spread out both horizontally and vertically to make soldering as easy as possible. I then connected the right-most as it was only going as far as the local via.

210420185734059

With the wires hideously attached, I considered bending the legs back down... But a blind person could see my dodgy soldering job would make contact.

DSC03699

Instead? Glue gun to the rescue! Finally? Test. It worked!

Filed under: Retro No Comments
15Mar/210

Arcade1Up Hacking

Thanks to some heavy coin-pusher usage at a local amusement center, this unit was 'won' and dragged home on the train. Pretty funny watching everyone watching me carrying a box'o'arcade machine on public transport!

20210122 194927

20210122 195931

In no time the machine was upright and SF2 was being played. All very nostalgic from both childhood and ... exactly 10 years and 10 days ago when I built MAME controllers from MS Keyboards.

20210122 211203

20210122 211301 20210122 212935 20210122 213844

20210122 215418

The unit came with 3 versions of SF2, but it was never my intention to keep it stock. The unit itself would provide a perfect base to build a fully-fledged arcade machine with all the games of my childhood!

The Base Hardware

The unit has an AllWinner ARM SOC built into a case mounted behind the screen. It's a tiny board that wont be easy to flash or extend. This actually means that there's a ridiculous amount of free space in the bottom of the unit as the actual electronics are tiny.

The ARM board would be difficult to re-flash and would also be limited with storage, so the decision was quickly made to replace the guts. Fortunately I could still use the screen and controls.

The New Hardware and Software

To use the screen, I had to purchase a controller board. It seems that the Arcade1Up guys have used a screen that's popular in other actual LCD monitors and therefore the boards are easy to come by. I found one on eBay... just search for LCD Controller Board For HSD190MEN4 M170EN06 17 inch D2K4. Pretty cryptic, but it's the model of the LCD.

s-l1600

With this unit swapped in, I now had VGA/HDMI/DVI access to the LCD! From here, I grabbed the nearest motherboard which happened to be an AMD Sempron X2 with 16GB RAM. I initially tried to use a GTX970 as well, but the compatibility with retro Linux distros wasn't up to scratch and therefore just stuck with the onboard video.

The controllers were wired in with USB Joystick Interfaces from Jaycar. They both were really plug-and-play and it meant I just had to unplug the controllers from the current distribution board and plug them into this one.

Choosing an OS can be difficult as there are a few great options: Lakka and Recalbox. I can't remember why I didn't enjoy Recalbox.

Slow Boot

I had initially installed a spare 1TB SSD, but found out quickly that it was unhealthy. I hadn't guessed it was the issue to start with, until I enabled SSH and reviewed dmesg.

login as: root
root@lakka's password:
###########################################
# Lakka - The DIY retro emulation console #
# ...... visit http://www.lakka.tv ...... #
###########################################

Lakka (official): 2.3.2 (Generic.x86_64)
Lakka:~ # dmesg
[    0.000000] BRK [0x03cf3000, 0x03cf3fff] PGTABLE
[    0.000000] BRK [0x03cf4000, 0x03cf4fff] PGTABLE
[    0.000000] BRK [0x03cf5000, 0x03cf5fff] PGTABLE
[    0.000000] BRK [0x03cf6000, 0x03cf6fff] PGTABLE
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F0450 000024 (v02 ALASKA)
[    0.000000] ACPI: XSDT 0x00000000BFB18070 00005C (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: FACP 0x00000000BFB1CD28 0000F4 (v04 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI BIOS Warning (bug): Optional FADT field Pm2ControlBlock has valid Length but zero Address: 0x0000000000000000/0x1 (20170119/tbfadt-649)
[    0.000000] ACPI: DSDT 0x00000000BFB18158 004BC9 (v02 ALASKA A M I    00000000 INTL 20051117)
[    0.000000] ACPI: FACS 0x00000000BFB54F80 000040
[    0.000000] ACPI: APIC 0x00000000BFB1CE20 000092 (v03 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: MCFG 0x00000000BFB1CEB8 00003C (v01 ALASKA A M I    01072009 MSFT 00010013)
[    0.000000] ACPI: AAFT 0x00000000BFB1CEF8 00003A (v01 ALASKA OEMAAFT  01072009 MSFT 00000097)
[    0.000000] ACPI: MCFG 0x00000000BFB1CF38 00003C (v01 ALASKA A M I    01072009 MSFT 00000097)
[    0.000000] ACPI: HPET 0x00000000BFB1CF78 000038 (v01 ALASKA A M I    01072009 AMI  00000004)
[    0.000000] ACPI: SSDT 0x00000000BFB1CFB0 0008BC (v01 AMD    POWERNOW 00000001 AMD  00000001)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000012fffffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x12fff9000-0x12fffcfff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000012fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009dfff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x00000000bfacbfff]
[    0.000000]   node   0: [mem 0x00000000bfd84000-0x00000000bfefffff]
[    0.000000]   node   0: [mem 0x0000000100001000-0x000000012fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000012fffffff]
[    0.000000] On node 0 totalpages: 981988
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3997 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 12210 pages used for memmap
[    0.000000]   DMA32 zone: 781384 pages, LIFO batch:31
[    0.000000]   Normal zone: 3072 pages used for memmap
[    0.000000]   Normal zone: 196607 pages, LIFO batch:31
[    0.000000] ACPI: PM-Timer IO Port: 0x808
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[    0.000000] IOAPIC[0]: apic_id 0, version 33, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0xffffffff base: 0xfed00000
[    0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[    0.000000] e820: [mem 0xbff00000-0xfebfffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    0.000000] setup_percpu: NR_CPUS:16 nr_cpumask_bits:16 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] percpu: Embedded 36 pages/cpu @ffff88012fc00000 s107904 r8192 d31360 u262144
[    0.000000] pcpu-alloc: s107904 r8192 d31360 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 966621
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: root=/dev/ram0 rdinit=/init usbcore.autosuspend=-1 BOOT_IMAGE=/KERNEL boot=LABEL=System disk=LABEL=Storage  quiet vt.global_cursor_default=0 loglevel=2
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] AGP: Checking aperture...
[    0.000000] AGP: No AGP bridge found
[    0.000000] AGP: Node 0: aperture [bus addr 0xfbf6000000-0xfbf7ffffff] (32MB)
[    0.000000] Aperture beyond 4GB. Ignoring.
[    0.000000] AGP: Your BIOS doesn't leave an aperture memory hole
[    0.000000] AGP: Please enable the IOMMU option in the BIOS setup
[    0.000000] AGP: This costs you 64MB of RAM
[    0.000000] AGP: Mapping aperture over RAM [mem 0xb4000000-0xb7ffffff] (65536KB)
[    0.000000] Memory: 3687652K/3927952K available (12780K kernel code, 1042K rwdata, 25412K rodata, 3464K init, 504K bss, 240300K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 64.
[    0.000000]  RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=8.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=8
[    0.000000] NR_IRQS:4352 nr_irqs:488 16
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.001000] tsc: Detected 3013.189 MHz processor
[    0.001000] Calibrating delay loop (skipped), value calculated using timer frequency.. 6026.37 BogoMIPS (lpj=3013189)
[    0.001000] pid_max: default: 32768 minimum: 301
[    0.001000] ACPI: Core revision 20170119
[    0.002751] ACPI: 2 ACPI AML tables successfully acquired and loaded
[    0.003214] Dentry cache hash table entries: 524288 (order: 11, 8388608 bytes)
[    0.005267] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.005794] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.005798] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.006004] CPU: Physical Processor ID: 0
[    0.006004] CPU: Processor Core ID: 0
[    0.006006] Last level iTLB entries: 4KB 512, 2MB 16, 4MB 8
[    0.006007] Last level dTLB entries: 4KB 512, 2MB 128, 4MB 64, 1GB 0
[    0.006093] Freeing SMP alternatives memory: 40K
[    0.007078] smpboot: Max logical packages: 2
[    0.007443] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.018000] smpboot: CPU0: AMD Phenom(tm) II X4 945 Processor (family: 0x10, model: 0x4, stepping: 0x2)
[    0.021022] Performance Events: AMD PMU driver.
[    0.021027] ... version:                0
[    0.021028] ... bit width:              48
[    0.021028] ... generic registers:      4
[    0.021029] ... value mask:             0000ffffffffffff
[    0.021029] ... max period:             00007fffffffffff
[    0.021030] ... fixed-purpose events:   0
[    0.021031] ... event mask:             000000000000000f
[    0.033080] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.035016] smp: Bringing up secondary CPUs ...
[    0.046024] x86: Booting SMP configuration:
[    0.046025] .... node  #0, CPUs:      #1 #2 #3
[    0.251031] smp: Brought up 1 node, 4 CPUs
[    0.251031] smpboot: Total of 4 processors activated (24103.72 BogoMIPS)
[    0.252078] sched_clock: Marking stable (252000000, 0)->(361237982, -109237982)
[    0.252339] devtmpfs: initialized
[    0.252739] PM: Registering ACPI NVS region [mem 0xbfacc000-0xbfb1dfff] (335872 bytes)
[    0.252744] PM: Registering ACPI NVS region [mem 0xbfb52000-0xbfb59fff] (32768 bytes)
[    0.252745] PM: Registering ACPI NVS region [mem 0xbfb81000-0xbfd83fff] (2109440 bytes)
[    0.252825] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.252856] futex hash table entries: 2048 (order: 6, 262144 bytes)
[    0.252927] xor: measuring software checksum speed
[    0.262649]    prefetch64-sse: 13896.000 MB/sec
[    0.272663]    generic_sse: 13184.000 MB/sec
[    0.272666] xor: using function: prefetch64-sse (13896.000 MB/sec)
[    0.272672] pinctrl core: initialized pinctrl subsystem
[    0.272890] NET: Registered protocol family 16
[    0.273193] cpuidle: using governor ladder
[    0.273229] cpuidle: using governor menu
[    0.273232] PCCT header not found.
[    0.273236] node 0 link 0: io port [c000, ffff]
[    0.273238] TOM: 00000000d0000000 aka 3328M
[    0.273239] Fam 10h mmconf [mem 0xe0000000-0xefffffff]
[    0.273241] node 0 link 0: mmio [d0000000, efffffff] ==> [d0000000, dfffffff]
[    0.273243] node 0 link 0: mmio [f0000000, fe4fffff]
[    0.273244] node 0 link 0: mmio [fe500000, fe6fffff]
[    0.273246] node 0 link 0: mmio [fe700000, febfffff]
[    0.273247] node 0 link 0: mmio [fec00000, fffeffff]
[    0.273248] node 0 link 0: mmio [ffff0000, ffffffff]
[    0.273249] TOM2: 0000000130000000 aka 4864M
[    0.273250] bus: [bus 00-1f] on node 0 link 0
[    0.273251] bus: 00 [io  0x0000-0xffff]
[    0.273251] bus: 00 [mem 0xd0000000-0xdfffffff]
[    0.273252] bus: 00 [mem 0xf0000000-0xffffffff]
[    0.273253] bus: 00 [mem 0x130000000-0xfcffffffff]
[    0.273389] ACPI: bus type PCI registered
[    0.273465] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.273467] PCI: not using MMCONFIG
[    0.273468] PCI: Using configuration type 1 for base access
[    0.273468] PCI: Using configuration type 1 for extended access
[    0.294675] raid6: sse2x1   gen()  3851 MB/s
[    0.311663] raid6: sse2x1   xor()  4023 MB/s
[    0.328658] raid6: sse2x2   gen()  6687 MB/s
[    0.345652] raid6: sse2x2   xor()  6890 MB/s
[    0.362658] raid6: sse2x4   gen()  7949 MB/s
[    0.379655] raid6: sse2x4   xor()  3494 MB/s
[    0.379657] raid6: using algorithm sse2x4 gen() 7949 MB/s
[    0.379658] raid6: .... xor() 3494 MB/s, rmw enabled
[    0.379659] raid6: using intx1 recovery algorithm
[    0.379749] ACPI: Added _OSI(Module Device)
[    0.379750] ACPI: Added _OSI(Processor Device)
[    0.379751] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.379751] ACPI: Added _OSI(Processor Aggregator Device)
[    0.380050] ACPI: Executed 3 blocks of module-level executable AML code
[    0.383018] ACPI: Interpreter enabled
[    0.383038] ACPI: (supports S0 S1 S3 S5)
[    0.383040] ACPI: Using IOAPIC for interrupt routing
[    0.383184] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.383223] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources
[    0.383234] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.390118] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.390123] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.390127] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[    0.390236] acpi PNP0A03:00: ignoring host bridge window [mem 0x000c8000-0x000dffff window] (conflicts with Video ROM [mem 0x000c0000-0x000cedff])
[    0.390268] PCI host bridge to bus 0000:00
[    0.390270] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.390271] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.390272] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.390273] pci_bus 0000:00: root bus resource [mem 0xd0000000-0xffffffff window]
[    0.390275] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.390283] pci 0000:00:00.0: [1022:9601] type 00 class 0x060000
[    0.390392] pci 0000:00:01.0: [1849:9602] type 01 class 0x060400
[    0.390495] pci 0000:00:09.0: [1022:9608] type 01 class 0x060400
[    0.390528] pci 0000:00:09.0: PME# supported from D0 D3hot D3cold
[    0.390576] pci 0000:00:09.0: System wakeup disabled by ACPI
[    0.390614] pci 0000:00:0a.0: [1022:9609] type 01 class 0x060400
[    0.390646] pci 0000:00:0a.0: PME# supported from D0 D3hot D3cold
[    0.390705] pci 0000:00:0a.0: System wakeup disabled by ACPI
[    0.390753] pci 0000:00:11.0: [1002:4390] type 00 class 0x01018f
[    0.390768] pci 0000:00:11.0: reg 0x10: [io  0xf090-0xf097]
[    0.390776] pci 0000:00:11.0: reg 0x14: [io  0xf080-0xf083]
[    0.390784] pci 0000:00:11.0: reg 0x18: [io  0xf070-0xf077]
[    0.390792] pci 0000:00:11.0: reg 0x1c: [io  0xf060-0xf063]
[    0.390800] pci 0000:00:11.0: reg 0x20: [io  0xf050-0xf05f]
[    0.390808] pci 0000:00:11.0: reg 0x24: [mem 0xfeb0b000-0xfeb0b3ff]
[    0.390827] pci 0000:00:11.0: set SATA to AHCI mode
[    0.390928] pci 0000:00:12.0: [1002:4397] type 00 class 0x0c0310
[    0.390940] pci 0000:00:12.0: reg 0x10: [mem 0xfeb0a000-0xfeb0afff]
[    0.391038] pci 0000:00:12.0: System wakeup disabled by ACPI
[    0.391080] pci 0000:00:12.2: [1002:4396] type 00 class 0x0c0320
[    0.391095] pci 0000:00:12.2: reg 0x10: [mem 0xfeb09000-0xfeb090ff]
[    0.391165] pci 0000:00:12.2: supports D1 D2
[    0.391166] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot
[    0.391217] pci 0000:00:12.2: System wakeup disabled by ACPI
[    0.391279] pci 0000:00:13.0: [1002:4397] type 00 class 0x0c0310
[    0.391290] pci 0000:00:13.0: reg 0x10: [mem 0xfeb08000-0xfeb08fff]
[    0.391386] pci 0000:00:13.0: System wakeup disabled by ACPI
[    0.391429] pci 0000:00:13.2: [1002:4396] type 00 class 0x0c0320
[    0.391443] pci 0000:00:13.2: reg 0x10: [mem 0xfeb07000-0xfeb070ff]
[    0.391513] pci 0000:00:13.2: supports D1 D2
[    0.391514] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot
[    0.391563] pci 0000:00:13.2: System wakeup disabled by ACPI
[    0.391624] pci 0000:00:14.0: [1002:4385] type 00 class 0x0c0500
[    0.391803] pci 0000:00:14.1: [1002:439c] type 00 class 0x01018a
[    0.391814] pci 0000:00:14.1: reg 0x10: [io  0xf040-0xf047]
[    0.391822] pci 0000:00:14.1: reg 0x14: [io  0xf030-0xf033]
[    0.391830] pci 0000:00:14.1: reg 0x18: [io  0xf020-0xf027]
[    0.391838] pci 0000:00:14.1: reg 0x1c: [io  0xf010-0xf013]
[    0.391846] pci 0000:00:14.1: reg 0x20: [io  0xf000-0xf00f]
[    0.391863] pci 0000:00:14.1: legacy IDE quirk: reg 0x10: [io  0x01f0-0x01f7]
[    0.391864] pci 0000:00:14.1: legacy IDE quirk: reg 0x14: [io  0x03f6]
[    0.391865] pci 0000:00:14.1: legacy IDE quirk: reg 0x18: [io  0x0170-0x0177]
[    0.391866] pci 0000:00:14.1: legacy IDE quirk: reg 0x1c: [io  0x0376]
[    0.391986] pci 0000:00:14.2: [1002:4383] type 00 class 0x040300
[    0.392004] pci 0000:00:14.2: reg 0x10: [mem 0xfeb00000-0xfeb03fff 64bit]
[    0.392063] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold
[    0.392111] pci 0000:00:14.2: System wakeup disabled by ACPI
[    0.392149] pci 0000:00:14.3: [1002:439d] type 00 class 0x060100
[    0.392287] pci 0000:00:14.4: [1002:4384] type 01 class 0x060401
[    0.392364] pci 0000:00:14.4: System wakeup disabled by ACPI
[    0.392424] pci 0000:00:14.5: [1002:4399] type 00 class 0x0c0310
[    0.392436] pci 0000:00:14.5: reg 0x10: [mem 0xfeb06000-0xfeb06fff]
[    0.392534] pci 0000:00:14.5: System wakeup disabled by ACPI
[    0.392578] pci 0000:00:15.0: [1002:43a0] type 01 class 0x060400
[    0.392644] pci 0000:00:15.0: supports D1 D2
[    0.392706] pci 0000:00:15.0: System wakeup disabled by ACPI
[    0.392748] pci 0000:00:15.1: [1002:43a1] type 01 class 0x060400
[    0.392815] pci 0000:00:15.1: supports D1 D2
[    0.392865] pci 0000:00:15.1: System wakeup disabled by ACPI
[    0.392938] pci 0000:00:16.0: [1002:4397] type 00 class 0x0c0310
[    0.392949] pci 0000:00:16.0: reg 0x10: [mem 0xfeb05000-0xfeb05fff]
[    0.393046] pci 0000:00:16.0: System wakeup disabled by ACPI
[    0.393089] pci 0000:00:16.2: [1002:4396] type 00 class 0x0c0320
[    0.393103] pci 0000:00:16.2: reg 0x10: [mem 0xfeb04000-0xfeb040ff]
[    0.393174] pci 0000:00:16.2: supports D1 D2
[    0.393175] pci 0000:00:16.2: PME# supported from D0 D1 D2 D3hot
[    0.393224] pci 0000:00:16.2: System wakeup disabled by ACPI
[    0.393277] pci 0000:00:18.0: [1022:1200] type 00 class 0x060000
[    0.393355] pci 0000:00:18.1: [1022:1201] type 00 class 0x060000
[    0.393430] pci 0000:00:18.2: [1022:1202] type 00 class 0x060000
[    0.393503] pci 0000:00:18.3: [1022:1203] type 00 class 0x060000
[    0.393579] pci 0000:00:18.4: [1022:1204] type 00 class 0x060000
[    0.393708] pci 0000:01:05.0: [1002:9714] type 00 class 0x030000
[    0.393715] pci 0000:01:05.0: reg 0x10: [mem 0xd0000000-0xdfffffff pref]
[    0.393718] pci 0000:01:05.0: reg 0x14: [io  0xe000-0xe0ff]
[    0.393722] pci 0000:01:05.0: reg 0x18: [mem 0xfe600000-0xfe60ffff]
[    0.393730] pci 0000:01:05.0: reg 0x24: [mem 0xfe500000-0xfe5fffff]
[    0.393748] pci 0000:01:05.0: supports D1 D2
[    0.393783] pci 0000:01:05.1: [1002:970f] type 00 class 0x040300
[    0.393789] pci 0000:01:05.1: reg 0x10: [mem 0xfe610000-0xfe613fff]
[    0.393818] pci 0000:01:05.1: supports D1 D2
[    0.393911] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.393914] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.393916] pci 0000:00:01.0:   bridge window [mem 0xfe500000-0xfe6fffff]
[    0.393918] pci 0000:00:01.0:   bridge window [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.393956] pci 0000:02:00.0: [1b6f:7023] type 00 class 0x0c0330
[    0.393971] pci 0000:02:00.0: reg 0x10: [mem 0xfea00000-0xfea07fff 64bit]
[    0.394043] pci 0000:02:00.0: supports D1 D2
[    0.394044] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.396723] pci 0000:00:09.0: PCI bridge to [bus 02]
[    0.396728] pci 0000:00:09.0:   bridge window [mem 0xfea00000-0xfeafffff]
[    0.396784] pci 0000:03:00.0: [1969:1083] type 00 class 0x020000
[    0.396805] pci 0000:03:00.0: reg 0x10: [mem 0xfe900000-0xfe93ffff 64bit]
[    0.396815] pci 0000:03:00.0: reg 0x18: [io  0xd000-0xd07f]
[    0.396908] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.399669] pci 0000:00:0a.0: PCI bridge to [bus 03]
[    0.399673] pci 0000:00:0a.0:   bridge window [io  0xd000-0xdfff]
[    0.399675] pci 0000:00:0a.0:   bridge window [mem 0xfe900000-0xfe9fffff]
[    0.399775] pci 0000:00:14.4: PCI bridge to [bus 04] (subtractive decode)
[    0.399783] pci 0000:00:14.4:   bridge window [io  0x0000-0x0cf7 window] (subtractive decode)
[    0.399784] pci 0000:00:14.4:   bridge window [io  0x0d00-0xffff window] (subtractive decode)
[    0.399785] pci 0000:00:14.4:   bridge window [mem 0x000a0000-0x000bffff window] (subtractive decode)
[    0.399786] pci 0000:00:14.4:   bridge window [mem 0xd0000000-0xffffffff window] (subtractive decode)
[    0.399846] pci 0000:05:00.0: [1106:3403] type 00 class 0x0c0010
[    0.399871] pci 0000:05:00.0: reg 0x10: [mem 0xfe800000-0xfe8007ff 64bit]
[    0.399883] pci 0000:05:00.0: reg 0x18: [io  0xc000-0xc0ff]
[    0.399991] pci 0000:05:00.0: supports D2
[    0.399992] pci 0000:05:00.0: PME# supported from D2 D3hot D3cold
[    0.402728] pci 0000:00:15.0: PCI bridge to [bus 05]
[    0.402734] pci 0000:00:15.0:   bridge window [io  0xc000-0xcfff]
[    0.402736] pci 0000:00:15.0:   bridge window [mem 0xfe800000-0xfe8fffff]
[    0.402807] pci 0000:06:00.0: [1b6f:7023] type 00 class 0x0c0330
[    0.402831] pci 0000:06:00.0: reg 0x10: [mem 0xfe700000-0xfe707fff 64bit]
[    0.402945] pci 0000:06:00.0: supports D1 D2
[    0.402946] pci 0000:06:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.405671] pci 0000:00:15.1: PCI bridge to [bus 06]
[    0.405682] pci 0000:00:15.1:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.406441] ACPI: PCI Interrupt Link [LNKA] (IRQs 10 11 14 15) *0
[    0.406501] ACPI: PCI Interrupt Link [LNKB] (IRQs 10 11 14 15) *0
[    0.406562] ACPI: PCI Interrupt Link [LNKC] (IRQs 10 11 14 15) *0
[    0.406623] ACPI: PCI Interrupt Link [LNKD] (IRQs 10 11 14 15) *0
[    0.406675] ACPI: PCI Interrupt Link [LNKE] (IRQs 10 11 14 15) *0
[    0.406728] ACPI: PCI Interrupt Link [LNKF] (IRQs 10 11 14 15) *0
[    0.406766] ACPI: PCI Interrupt Link [LNKG] (IRQs 10 11 14 15) *0
[    0.406804] ACPI: PCI Interrupt Link [LNKH] (IRQs 10 11 14 15) *0
[    0.407006] pci 0000:01:05.0: vgaarb: setting as boot VGA device
[    0.407008] pci 0000:01:05.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.407012] pci 0000:01:05.0: vgaarb: bridge control possible
[    0.407012] vgaarb: loaded
[    0.407074] SCSI subsystem initialized
[    0.407114] libata version 3.00 loaded.
[    0.407139] ACPI: bus type USB registered
[    0.407160] usbcore: registered new interface driver usbfs
[    0.407171] usbcore: registered new interface driver hub
[    0.407192] usbcore: registered new device driver usb
[    0.407216] pps_core: LinuxPPS API ver. 1 registered
[    0.407217] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.407219] PTP clock support registered
[    0.407278] wmi: Mapper loaded
[    0.407292] Advanced Linux Sound Architecture Driver Initialized.
[    0.407293] PCI: Using ACPI for IRQ routing
[    0.414819] PCI: pci_cache_line_size set to 64 bytes
[    0.414882] e820: reserve RAM buffer [mem 0x0009ec00-0x0009ffff]
[    0.414883] e820: reserve RAM buffer [mem 0xbfacc000-0xbfffffff]
[    0.414884] e820: reserve RAM buffer [mem 0xbff00000-0xbfffffff]
[    0.415150] clocksource: Switched to clocksource hpet
[    0.415214] FS-Cache: Loaded
[    0.415240] pnp: PnP ACPI init
[    0.415341] system 00:00: [mem 0xe0000000-0xefffffff] has been reserved
[    0.415345] system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.415485] system 00:01: [mem 0xc0000000-0xcfffffff] has been reserved
[    0.415488] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.415772] system 00:02: [io  0x040b] has been reserved
[    0.415774] system 00:02: [io  0x04d6] has been reserved
[    0.415775] system 00:02: [io  0x0c00-0x0c01] has been reserved
[    0.415777] system 00:02: [io  0x0c14] has been reserved
[    0.415778] system 00:02: [io  0x0c50-0x0c51] has been reserved
[    0.415780] system 00:02: [io  0x0c52] has been reserved
[    0.415781] system 00:02: [io  0x0c6c] has been reserved
[    0.415783] system 00:02: [io  0x0c6f] has been reserved
[    0.415784] system 00:02: [io  0x0cd0-0x0cd1] has been reserved
[    0.415786] system 00:02: [io  0x0cd2-0x0cd3] has been reserved
[    0.415787] system 00:02: [io  0x0cd4-0x0cd5] has been reserved
[    0.415789] system 00:02: [io  0x0cd6-0x0cd7] has been reserved
[    0.415790] system 00:02: [io  0x0cd8-0x0cdf] has been reserved
[    0.415791] system 00:02: [io  0x0800-0x089f] has been reserved
[    0.415793] system 00:02: [io  0x0b20-0x0b3f] has been reserved
[    0.415795] system 00:02: [io  0x0900-0x090f] has been reserved
[    0.415796] system 00:02: [io  0x0910-0x091f] has been reserved
[    0.415799] system 00:02: [io  0xfe00-0xfefe] has been reserved
[    0.415801] system 00:02: [mem 0xfec00000-0xfec00fff] could not be reserved
[    0.415802] system 00:02: [mem 0xfee00000-0xfee00fff] has been reserved
[    0.415804] system 00:02: [mem 0xfed80000-0xfed8ffff] has been reserved
[    0.415806] system 00:02: [mem 0xfed61000-0xfed70fff] has been reserved
[    0.415807] system 00:02: [mem 0xfec10000-0xfec10fff] has been reserved
[    0.415809] system 00:02: [mem 0xfed00000-0xfed00fff] could not be reserved
[    0.415810] system 00:02: [mem 0xffc00000-0xffffffff] has been reserved
[    0.415813] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.415925] system 00:03: [io  0x0290-0x029f] has been reserved
[    0.415928] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.416118] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.416202] system 00:05: [io  0x04d0-0x04d1] has been reserved
[    0.416206] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.416279] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.416322] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[    0.416371] pnp 00:08: Plug and Play ACPI device, IDs PNP0f03 PNP0f13 (active)
[    0.416594] pnp 00:09: [dma 0 disabled]
[    0.416640] pnp 00:09: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.416914] pnp: PnP ACPI: found 10 devices
[    0.423939] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.423976] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.423977] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.423980] pci 0000:00:01.0:   bridge window [mem 0xfe500000-0xfe6fffff]
[    0.423982] pci 0000:00:01.0:   bridge window [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.423984] pci 0000:00:09.0: PCI bridge to [bus 02]
[    0.423986] pci 0000:00:09.0:   bridge window [mem 0xfea00000-0xfeafffff]
[    0.423989] pci 0000:00:0a.0: PCI bridge to [bus 03]
[    0.423990] pci 0000:00:0a.0:   bridge window [io  0xd000-0xdfff]
[    0.423992] pci 0000:00:0a.0:   bridge window [mem 0xfe900000-0xfe9fffff]
[    0.423996] pci 0000:00:14.4: PCI bridge to [bus 04]
[    0.424005] pci 0000:00:15.0: PCI bridge to [bus 05]
[    0.424007] pci 0000:00:15.0:   bridge window [io  0xc000-0xcfff]
[    0.424011] pci 0000:00:15.0:   bridge window [mem 0xfe800000-0xfe8fffff]
[    0.424016] pci 0000:00:15.1: PCI bridge to [bus 06]
[    0.424020] pci 0000:00:15.1:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.424026] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.424027] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.424029] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[    0.424030] pci_bus 0000:00: resource 7 [mem 0xd0000000-0xffffffff window]
[    0.424031] pci_bus 0000:01: resource 0 [io  0xe000-0xefff]
[    0.424032] pci_bus 0000:01: resource 1 [mem 0xfe500000-0xfe6fffff]
[    0.424033] pci_bus 0000:01: resource 2 [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.424034] pci_bus 0000:02: resource 1 [mem 0xfea00000-0xfeafffff]
[    0.424036] pci_bus 0000:03: resource 0 [io  0xd000-0xdfff]
[    0.424037] pci_bus 0000:03: resource 1 [mem 0xfe900000-0xfe9fffff]
[    0.424038] pci_bus 0000:04: resource 4 [io  0x0000-0x0cf7 window]
[    0.424039] pci_bus 0000:04: resource 5 [io  0x0d00-0xffff window]
[    0.424040] pci_bus 0000:04: resource 6 [mem 0x000a0000-0x000bffff window]
[    0.424041] pci_bus 0000:04: resource 7 [mem 0xd0000000-0xffffffff window]
[    0.424042] pci_bus 0000:05: resource 0 [io  0xc000-0xcfff]
[    0.424044] pci_bus 0000:05: resource 1 [mem 0xfe800000-0xfe8fffff]
[    0.424045] pci_bus 0000:06: resource 1 [mem 0xfe700000-0xfe7fffff]
[    0.424100] NET: Registered protocol family 2
[    0.424247] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[    0.424461] TCP bind hash table entries: 32768 (order: 8, 1835008 bytes)
[    0.424773] TCP: Hash tables configured (established 32768 bind 32768)
[    0.424845] UDP hash table entries: 2048 (order: 6, 262144 bytes)
[    0.424922] UDP-Lite hash table entries: 2048 (order: 6, 262144 bytes)
[    0.425046] NET: Registered protocol family 1
[    0.425180] RPC: Registered named UNIX socket transport module.
[    0.425181] RPC: Registered udp transport module.
[    0.425182] RPC: Registered tcp transport module.
[    0.425182] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.425187] pci 0000:00:01.0: MSI quirk detected; subordinate MSI disabled
[    1.472903] pci 0000:01:05.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    1.473147] pci 0000:03:00.0: [Firmware Bug]: disabling VPD access (can't determine size of non-standard VPD format)
[    1.473510] PCI: CLS 64 bytes, default 64
[    1.507331] PCI-DMA: Disabling AGP.
[    1.507448] PCI-DMA: aperture base @ b4000000 size 65536 KB
[    1.507449] PCI-DMA: using GART IOMMU.
[    1.507451] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
[    1.514215] LVT offset 1 assigned for vector 0x400
[    1.514229] IBS: LVT offset 1 assigned
[    1.514332] perf: AMD IBS detected (0x0000001f)
[    1.514858] Scanning for low memory corruption every 60 seconds
[    1.515434] workingset: timestamp_bits=40 max_order=20 bucket_order=0
[    1.517956] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.518051] FS-Cache: Netfs 'nfs' registered for caching
[    1.518258] NFS: Registering the id_resolver key type
[    1.518265] Key type id_resolver registered
[    1.518266] Key type id_legacy registered
[    1.518269] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.518413] FS-Cache: Netfs 'cifs' registered for caching
[    1.521501] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[    1.521503] io scheduler noop registered
[    1.521560] io scheduler cfq registered (default)
[    1.521561] io scheduler mq-deadline registered
[    1.522616] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    1.522619] ACPI: Power Button [PWRB]
[    1.522667] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    1.522668] ACPI: Power Button [PWRF]
[    1.523207] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.543850] 00:09: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    1.544261] Linux agpgart interface v0.103
[    1.544328] [drm] radeon kernel modesetting enabled.
[    1.544651] [drm] initializing kernel modesetting (RS880 0x1002:0x9714 0x1849:0x9714 0x00).
[    1.544661] [drm] register mmio base: 0xFE600000
[    1.544662] [drm] register mmio size: 65536
[    1.544704] ATOM BIOS: B43106
[    1.544727] radeon 0000:01:05.0: VRAM: 368M 0x00000000C0000000 - 0x00000000D6FFFFFF (368M used)
[    1.544728] radeon 0000:01:05.0: GTT: 512M 0x00000000A0000000 - 0x00000000BFFFFFFF
[    1.544735] [drm] Detected VRAM RAM=368M, BAR=256M
[    1.544736] [drm] RAM width 32bits DDR
[    1.544826] [TTM] Zone  kernel: Available graphics memory: 1876822 kiB
[    1.544827] [TTM] Initializing pool allocator
[    1.544831] [TTM] Initializing DMA pool allocator
[    1.544853] [drm] radeon: 368M of VRAM memory ready
[    1.544854] [drm] radeon: 512M of GTT memory ready.
[    1.544865] [drm] Loading RS780 Microcode
[    1.544883] [drm] radeon: power management initialized
[    1.544900] [drm] GART: num cpu pages 131072, num gpu pages 131072
[    1.553315] [drm] PCIE GART of 512M enabled (table at 0x00000000C0146000).
[    1.553366] radeon 0000:01:05.0: WB enabled
[    1.553368] radeon 0000:01:05.0: fence driver on ring 0 use gpu addr 0x00000000a0000c00 and cpu addr 0xffff880129a7fc00
[    1.555643] radeon 0000:01:05.0: fence driver on ring 5 use gpu addr 0x00000000c0056038 and cpu addr 0xffffc90000e16038
[    1.555644] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.555645] [drm] Driver supports precise vblank timestamp query.
[    1.555646] radeon 0000:01:05.0: radeon: MSI limited to 32-bit
[    1.555744] [drm] radeon: irq initialized.
[    1.587948] [drm] ring test on 0 succeeded in 1 usecs
[    1.763997] [drm] ring test on 5 succeeded in 1 usecs
[    1.764001] [drm] UVD initialized successfully.
[    1.764293] [drm] ib test on ring 0 succeeded in 0 usecs
[    2.416235] [drm] ib test on ring 5 succeeded
[    2.416456] [drm] Radeon Display Connectors
[    2.416456] [drm] Connector 0:
[    2.416457] [drm]   VGA-1
[    2.416458] [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
[    2.416458] [drm]   Encoders:
[    2.416459] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
[    2.416459] [drm] Connector 1:
[    2.416460] [drm]   HDMI-A-1
[    2.416460] [drm]   HPD3
[    2.416461] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
[    2.416462] [drm]   Encoders:
[    2.416462] [drm]     DFP3: INTERNAL_KLDSCP_LVTMA
[    2.494140] [drm] fb mappable at 0xD0247000
[    2.494141] [drm] vram apper at 0xD0000000
[    2.494142] [drm] size 5242880
[    2.494142] [drm] fb depth is 24
[    2.494143] [drm]    pitch is 5120
[    2.494247] fbcon: radeondrmfb (fb0) is primary device
[    2.527033] Console: switching to colour frame buffer device 160x64
[    2.528241] tsc: Refined TSC clocksource calibration: 3013.233 MHz
[    2.528253] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2b6f19b8b69, max_idle_ns: 440795211742 ns
[    2.538463] radeon 0000:01:05.0: fb0: radeondrmfb frame buffer device
[    2.538486] [drm] Initialized radeon 2.49.0 20080528 for 0000:01:05.0 on minor 0
[    2.538605] [drm] amdgpu kernel modesetting enabled.
[    2.542764] brd: module loaded
[    2.542830] loop: module loaded
[    2.548965] usbcore: registered new interface driver rtsx_usb
[    2.548987] Loading iSCSI transport class v2.0-870.
[    2.549124] iscsi: registered transport (tcp)
[    2.549125] megasas: 07.701.17.00-rc1
[    2.549381] ahci 0000:00:11.0: version 3.0
[    2.549725] ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
[    2.549729] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part sxs
[    2.551517] scsi host0: ahci
[    2.551673] scsi host1: ahci
[    2.551803] scsi host2: ahci
[    2.551949] scsi host3: ahci
[    2.551997] ata1: SATA max UDMA/133 abar m1024@0xfeb0b000 port 0xfeb0b100 irq 19
[    2.551999] ata2: SATA max UDMA/133 abar m1024@0xfeb0b000 port 0xfeb0b180 irq 19
[    2.552001] ata3: SATA max UDMA/133 abar m1024@0xfeb0b000 port 0xfeb0b200 irq 19
[    2.552003] ata4: SATA max UDMA/133 abar m1024@0xfeb0b000 port 0xfeb0b280 irq 19
[    2.553046] scsi host4: pata_atiixp
[    2.554211] scsi host5: pata_atiixp
[    2.554260] ata5: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xf000 irq 14
[    2.554261] ata6: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xf008 irq 15
[    2.554624] tun: Universal TUN/TAP device driver, 1.6
[    2.554758] pcnet32: pcnet32.c:v1.35 21.Apr.2008 tsbogend@alpha.franken.de
[    2.554800] Atheros(R) L2 Ethernet Driver - version 2.2.3
[    2.554801] Copyright (c) 2007 Atheros Corporation.
[    2.578466] atl1c 0000:03:00.0: version 1.0.1.1-NAPI
[    2.578612] cnic: QLogic cnicDriver v2.5.22 (July 20, 2015)
[    2.578722] uli526x: ULi M5261/M5263 net driver, version 0.9.3 (2005-7-29)
[    2.578744] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
[    2.578745] e100: Copyright(c) 1999-2006 Intel Corporation
[    2.578769] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[    2.578769] e1000: Copyright (c) 1999-2006 Intel Corporation.
[    2.578794] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    2.578794] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    2.578820] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k
[    2.578821] igb: Copyright (c) 2007-2014 Intel Corporation.
[    2.578844] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 5.0.0-k
[    2.578845] ixgbe: Copyright (c) 1999-2016 Intel Corporation.
[    2.578950] ixgb: Intel(R) PRO/10GbE Network Driver - version 1.0.135-k2-NAPI
[    2.578951] ixgb: Copyright (c) 1999-2008 Intel Corporation.
[    2.578974] jme: JMicron JMC2XX ethernet driver version 1.0.8
[    2.579017] sky2: driver version 1.30
[    2.579294] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.579295] ehci-pci: EHCI PCI platform driver
[    2.579575] QUIRK: Enable AMD PLL fix
[    2.579605] ehci-pci 0000:00:12.2: EHCI Host Controller
[    2.579611] ehci-pci 0000:00:12.2: new USB bus registered, assigned bus number 1
[    2.579616] ehci-pci 0000:00:12.2: applying AMD SB700/SB800/Hudson-2/3 EHCI dummy qh workaround
[    2.579624] ehci-pci 0000:00:12.2: debug port 1
[    2.579716] ehci-pci 0000:00:12.2: irq 17, io mem 0xfeb09000
[    2.586249] ehci-pci 0000:00:12.2: USB 2.0 started, EHCI 1.00
[    2.586469] hub 1-0:1.0: USB hub found
[    2.586475] hub 1-0:1.0: 5 ports detected
[    2.586947] ehci-pci 0000:00:13.2: EHCI Host Controller
[    2.586951] ehci-pci 0000:00:13.2: new USB bus registered, assigned bus number 2
[    2.586954] ehci-pci 0000:00:13.2: applying AMD SB700/SB800/Hudson-2/3 EHCI dummy qh workaround
[    2.586963] ehci-pci 0000:00:13.2: debug port 1
[    2.587044] ehci-pci 0000:00:13.2: irq 17, io mem 0xfeb07000
[    2.593248] ehci-pci 0000:00:13.2: USB 2.0 started, EHCI 1.00
[    2.593473] hub 2-0:1.0: USB hub found
[    2.593478] hub 2-0:1.0: 5 ports detected
[    2.593954] ehci-pci 0000:00:16.2: EHCI Host Controller
[    2.593959] ehci-pci 0000:00:16.2: new USB bus registered, assigned bus number 3
[    2.593961] ehci-pci 0000:00:16.2: applying AMD SB700/SB800/Hudson-2/3 EHCI dummy qh workaround
[    2.593970] ehci-pci 0000:00:16.2: debug port 1
[    2.594048] ehci-pci 0000:00:16.2: irq 17, io mem 0xfeb04000
[    2.600263] ehci-pci 0000:00:16.2: USB 2.0 started, EHCI 1.00
[    2.600475] hub 3-0:1.0: USB hub found
[    2.600480] hub 3-0:1.0: 4 ports detected
[    2.600697] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.600701] ohci-pci: OHCI PCI platform driver
[    2.600943] ohci-pci 0000:00:12.0: OHCI PCI host controller
[    2.600949] ohci-pci 0000:00:12.0: new USB bus registered, assigned bus number 4
[    2.601032] ohci-pci 0000:00:12.0: irq 18, io mem 0xfeb0a000
[    2.656475] hub 4-0:1.0: USB hub found
[    2.656518] hub 4-0:1.0: 5 ports detected
[    2.656880] ohci-pci 0000:00:13.0: OHCI PCI host controller
[    2.656885] ohci-pci 0000:00:13.0: new USB bus registered, assigned bus number 5
[    2.656949] ohci-pci 0000:00:13.0: irq 18, io mem 0xfeb08000
[    2.712446] hub 5-0:1.0: USB hub found
[    2.712454] hub 5-0:1.0: 5 ports detected
[    2.712786] ohci-pci 0000:00:14.5: OHCI PCI host controller
[    2.712791] ohci-pci 0000:00:14.5: new USB bus registered, assigned bus number 6
[    2.712854] ohci-pci 0000:00:14.5: irq 18, io mem 0xfeb06000
[    2.726061] ata5.00: supports DRM functions and may not be fully accessible
[    2.726063] ata5.00: ATA-9: Samsung SSD 840 EVO 1TB mSATA, EXT41B6Q, max UDMA/133
[    2.726065] ata5.00: 1953525168 sectors, multi 1: LBA48 NCQ (depth 0/32)
[    2.726210] ata5.00: limited to UDMA/33 due to 40-wire cable
[    2.728973] ata5.00: supports DRM functions and may not be fully accessible
[    2.729103] ata5.00: configured for UDMA/33
[    2.768469] hub 6-0:1.0: USB hub found
[    2.768512] hub 6-0:1.0: 2 ports detected
[    2.768876] ohci-pci 0000:00:16.0: OHCI PCI host controller
[    2.768882] ohci-pci 0000:00:16.0: new USB bus registered, assigned bus number 7
[    2.768949] ohci-pci 0000:00:16.0: irq 18, io mem 0xfeb05000
[    2.824470] hub 7-0:1.0: USB hub found
[    2.824512] hub 7-0:1.0: 4 ports detected
[    2.824654] uhci_hcd: USB Universal Host Controller Interface driver
[    2.824800] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    2.824805] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 8
[    2.824876] xhci_hcd 0000:02:00.0: hcc params 0x040050af hci version 0x100 quirks 0x00080490
[    2.825165] hub 8-0:1.0: USB hub found
[    2.825172] hub 8-0:1.0: 2 ports detected
[    2.825358] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    2.825362] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 9
[    2.825376] usb usb9: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.825532] hub 9-0:1.0: USB hub found
[    2.825539] hub 9-0:1.0: 2 ports detected
[    2.825725] xhci_hcd 0000:06:00.0: xHCI Host Controller
[    2.825729] xhci_hcd 0000:06:00.0: new USB bus registered, assigned bus number 10
[    2.825828] xhci_hcd 0000:06:00.0: hcc params 0x040050af hci version 0x100 quirks 0x00080490
[    2.826102] hub 10-0:1.0: USB hub found
[    2.826145] hub 10-0:1.0: 2 ports detected
[    2.826289] xhci_hcd 0000:06:00.0: xHCI Host Controller
[    2.826291] xhci_hcd 0000:06:00.0: new USB bus registered, assigned bus number 11
[    2.826306] usb usb11: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.826453] hub 11-0:1.0: USB hub found
[    2.826497] hub 11-0:1.0: 2 ports detected
[    2.826628] usbcore: registered new interface driver uas
[    2.826666] usbcore: registered new interface driver usb-storage
[    2.826739] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12
[    2.829998] serio: i8042 KBD port at 0x60,0x64 irq 1
[    2.830034] serio: i8042 AUX port at 0x60,0x64 irq 12
[    2.830151] mousedev: PS/2 mouse device common for all mice
[    2.830429] rtc_cmos 00:04: RTC can wake from S4
[    2.830542] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[    2.830588] rtc_cmos 00:04: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
[    2.830603] i2c /dev entries driver
[    2.830908] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0
[    2.830914] piix4_smbus 0000:00:14.0: Using register 0x2c for SMBus port selection
[    2.831271] piix4_smbus 0000:00:14.0: Auxiliary SMBus Host Controller at 0xb20
[    2.831444] w83627ehf: Found NCT6775F chip at 0x290
[    2.831825] w83627ehf w83627ehf.656: hwmon_device_register() is deprecated. Please convert the driver to use hwmon_device_register_with_info().
[    2.831849] sdhci: Secure Digital Host Controller Interface driver
[    2.831849] sdhci: Copyright(c) Pierre Ossman
[    2.831917] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.831919] No iBFT detected.
[    2.831929] hidraw: raw HID events driver (C) Jiri Kosina
[    2.832443] usbcore: registered new interface driver usbhid
[    2.832443] usbhid: USB HID core driver
[    2.832792] NET: Registered protocol family 10
[    2.833059] Segment Routing with IPv6
[    2.833073] NET: Registered protocol family 17
[    2.833095] Key type dns_resolver registered
[    2.833180] microcode: microcode updated early to new patch_level=0x010000db
[    2.833264] microcode: CPU0: patch_level=0x010000db
[    2.833272] microcode: CPU1: patch_level=0x010000db
[    2.833277] microcode: CPU2: patch_level=0x010000db
[    2.833285] microcode: CPU3: patch_level=0x010000db
[    2.833321] microcode: Microcode Update Driver: v2.2.
[    2.833862] Btrfs loaded, crc32c=crc32c-generic
[    2.834220] console [netcon0] enabled
[    2.834221] netconsole: network logging started
[    2.834253] rtc_cmos 00:04: setting system clock to 2021-03-12 06:43:59 UTC (1615531439)
[    2.834334] acpi_cpufreq: overriding BIOS provided _PSD data
[    2.834641] ALSA device list:
[    2.834642]   No soundcards found.
[    2.862278] ata1: SATA link down (SStatus 0 SControl 300)
[    2.862318] ata2: SATA link down (SStatus 0 SControl 300)
[    2.862358] ata4: SATA link down (SStatus 0 SControl 300)
[    2.862396] ata3: SATA link down (SStatus 0 SControl 300)
[    2.862580] scsi 4:0:0:0: Direct-Access     ATA      Samsung SSD 840  1B6Q PQ: 0 ANSI: 5
[    2.862833] sd 4:0:0:0: Attached scsi generic sg0 type 0
[    2.862940] sd 4:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[    2.862957] sd 4:0:0:0: [sda] Write Protect is off
[    2.862958] sd 4:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.862992] sd 4:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.867013]  sda: sda1 sda2
[    2.867531] sd 4:0:0:0: [sda] Attached SCSI disk
[    2.869915] Freeing unused kernel memory: 3464K
[    2.869917] Write protecting the kernel read-only data: 40960k
[    2.871338] Freeing unused kernel memory: 1540K
[    2.874363] Freeing unused kernel memory: 1212K
[    3.046234] usb 5-1: new low-speed USB device number 2 using ohci-pci
[    3.078254] usb 4-4: new full-speed USB device number 2 using ohci-pci
[    3.158252] usb 7-2: new low-speed USB device number 2 using ohci-pci
[    3.214402] input: DragonRise Inc.   Generic   USB  Joystick   as /devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1:1.0/0003:0079:0006.0001/input/input5
[    3.214559] dragonrise 0003:0079:0006.0001: input,hidraw0: USB HID v1.10 Joystick [DragonRise Inc.   Generic   USB  Joystick  ] on usb-0000:00:13.0-1/input0
[    3.214567] dragonrise 0003:0079:0006.0001: Force Feedback for DragonRise Inc. game controllers by Richard Walmsley <richwalm@gmail.com>
[    3.238701] input:   mini keyboard as /devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.0/0003:1997:2433.0002/input/input6
[    3.290479] hid-generic 0003:1997:2433.0002: input,hidraw1: USB HID v1.01 Keyboard [  mini keyboard] on usb-0000:00:12.0-4/input0
[    3.294773] input:   mini keyboard as /devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.1/0003:1997:2433.0003/input/input7
[    3.324411] input: DragonRise Inc.   Generic   USB  Joystick   as /devices/pci0000:00/0000:00:16.0/usb7/7-2/7-2:1.0/0003:0079:0006.0004/input/input8
[    3.346388] hid-generic 0003:1997:2433.0003: input,hidraw2: USB HID v1.01 Mouse [  mini keyboard] on usb-0000:00:12.0-4/input1
[    3.346572] dragonrise 0003:0079:0006.0004: input,hidraw3: USB HID v1.10 Joystick [DragonRise Inc.   Generic   USB  Joystick  ] on usb-0000:00:16.0-2/input0
[    3.346578] dragonrise 0003:0079:0006.0004: Force Feedback for DragonRise Inc. game controllers by Richard Walmsley <richwalm@gmail.com>
[    3.552292] clocksource: Switched to clocksource tsc
[    4.336769] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    4.336928] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    4.366532] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[   34.795714] ata5: lost interrupt (Status 0x58)
[   34.795733] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   34.795737] ata5.00: cmd c8/00:01:74:08:00/00:00:00:00:00/e0 tag 0 dma 512 in
[   34.795737]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[   34.795755] ata5: soft resetting link
[   34.955362] ata5.00: supports DRM functions and may not be fully accessible
[   34.958209] ata5.00: supports DRM functions and may not be fully accessible
[   34.958337] ata5.00: configured for UDMA/33
[   34.958341] ata5.00: device reported invalid CHS sector 0
[   34.958352] ata5: EH complete
[   66.028167] ata5: lost interrupt (Status 0x58)
[   66.028185] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   66.028190] ata5.00: cmd c8/00:01:78:09:00/00:00:00:00:00/e0 tag 0 dma 512 in
[   66.028190]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[   66.028208] ata5: soft resetting link
[   66.187810] ata5.00: supports DRM functions and may not be fully accessible
[   66.190681] ata5.00: supports DRM functions and may not be fully accessible
[   66.190807] ata5.00: configured for UDMA/33
[   66.190810] ata5.00: device reported invalid CHS sector 0
[   66.190821] ata5: EH complete
[   96.748611] ata5: lost interrupt (Status 0x58)
[   96.748630] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   96.748635] ata5.00: cmd c8/00:01:0e:0a:00/00:00:00:00:00/e0 tag 0 dma 512 in
[   96.748635]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[   96.748653] ata5: soft resetting link
[   96.908257] ata5.00: supports DRM functions and may not be fully accessible
[   96.911107] ata5.00: supports DRM functions and may not be fully accessible
[   96.911232] ata5.00: configured for UDMA/33
[   96.911235] ata5.00: device reported invalid CHS sector 0
[   96.911251] ata5: EH complete
[  127.981071] ata5: lost interrupt (Status 0x58)
[  127.981090] ata5.00: limiting speed to UDMA/25:PIO4
[  127.981092] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[  127.981096] ata5.00: cmd c8/00:01:47:0a:00/00:00:00:00:00/e0 tag 0 dma 512 in
[  127.981096]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[  127.981114] ata5: soft resetting link
[  128.140718] ata5.00: supports DRM functions and may not be fully accessible
[  128.143607] ata5.00: supports DRM functions and may not be fully accessible
[  128.143733] ata5.00: configured for UDMA/25
[  128.143736] ata5.00: device reported invalid CHS sector 0
[  128.143748] ata5: EH complete
[  159.213522] ata5: lost interrupt (Status 0x58)
[  159.213540] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[  159.213545] ata5.00: cmd c8/00:01:22:0b:00/00:00:00:00:00/e0 tag 0 dma 512 in
[  159.213545]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[  159.213563] ata5: soft resetting link
[  159.373159] ata5.00: supports DRM functions and may not be fully accessible
[  159.376050] ata5.00: supports DRM functions and may not be fully accessible
[  159.376176] ata5.00: configured for UDMA/25
[  159.376179] ata5.00: device reported invalid CHS sector 0
[  159.376190] ata5: EH complete
[  159.671382] systemd[1]: systemd 232 running in system mode. (-PAM -AUDIT -SELINUX -IMA -APPARMOR -SMACK -SYSVINIT -UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS -ACL -XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN)
[  159.671551] systemd[1]: Detected architecture x86-64.
[  159.671690] systemd[1]: Set hostname to <Lakka>.
[  159.698900] systemd[1]: Reached target Swap.
[  159.698994] systemd[1]: Listening on Journal Socket (/dev/log).
[  159.699030] systemd[1]: Listening on Journal Socket.
[  159.699081] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[  159.699165] systemd[1]: Listening on RPCbind Server Activation Socket.
[  159.699509] systemd[1]: Created slice System Slice.
[  159.700011] systemd[1]: Mounting Variable Directory...
[  159.715274] applespi: loading out-of-tree module taints kernel.
[  159.799409] systemd-journald[285]: Received request to flush runtime journal from PID 1
[  160.232295] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  160.234587] atl1c 0000:03:00.0: atl1c: eth0 NIC Link is Up<100 Mbps Half Duplex>
[  160.243233] 8021q: 802.1Q VLAN Support v1.8
[  160.253336] input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:05.1/sound/card1/input9
[  160.317919] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC892: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line
[  160.317922] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[  160.317924] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[  160.317925] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[  160.317926] snd_hda_codec_realtek hdaudioC0D0:    dig-out=0x1e/0x0
[  160.317927] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[  160.317928] snd_hda_codec_realtek hdaudioC0D0:      Front Mic=0x19
[  160.317930] snd_hda_codec_realtek hdaudioC0D0:      Rear Mic=0x18
[  160.317931] snd_hda_codec_realtek hdaudioC0D0:      Line=0x1a
[  160.346669] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  160.388007] input: HDA ATI SB Rear Mic as /devices/pci0000:00/0000:00:14.2/sound/card0/input10
[  160.393169] input: HDA ATI SB Line as /devices/pci0000:00/0000:00:14.2/sound/card0/input11
[  160.398442] input: HDA ATI SB Line Out Front as /devices/pci0000:00/0000:00:14.2/sound/card0/input12
[  160.404067] input: HDA ATI SB Line Out Surround as /devices/pci0000:00/0000:00:14.2/sound/card0/input13
[  160.410416] input: HDA ATI SB Line Out CLFE as /devices/pci0000:00/0000:00:14.2/sound/card0/input14
[  160.520522] firewire_ohci 0000:05:00.0: added OHCI v1.10 device as card 0, 4 IR + 8 IT contexts, quirks 0x10
[  160.650516] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  160.954556] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  161.026614] firewire_core 0000:05:00.0: created device fw0: GUID 008f1300b4de0c00, S400
[  161.258574] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  161.562590] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  161.866547] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  162.170548] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  162.474549] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD
[  162.778554] snd_hda_codec_hdmi hdaudioC1D0: HDMI ATI/AMD: no speaker allocation for ELD

You'll notice it's all milliseconds until it tries to bring the ATA up. Then the following occurs with a 30s timeout:

ata5: lost interrupt (Status 0x58)

Eek. Seems my SSD is faulty! I switched to another drive and that solved the issue seeing the machine boot in a few seconds. It turns out that other humans have added kernel boot params to get around the issues with the old drive, but I really didn't need all that space!

Controller mapping?

Here I was expecting a standard for RetroArch, but it seems everyone has their own ideas. And you know what?, I'm cool with that... It allows me to customise everything on my side also... just means a bit more configuration-work. I started with SF2 on MAME2010 engine (assuming the latest was the best?) and quickly found out that P2's keys weren't fully mapped. 1,2,3 and 5 were, but 4 and 6 were missing! No varied kicking in SF2! I hit TAB to check out the configuration inside MAME:

DSC02804

Ok, so it's BAY along the top buttons and XLR along the bottom. This all matched to the Lakka config, but the buttons still just wouldn't work. A quick google saw it to be an un-fixed issue. Switching back to mame2003 fixed it! But then introduced another issue: You need to switch the default controller to digital and make sure the input is simultaneous (keyboard + retropad):

DSC02805

The above shot shows how to get to the config... press F1 when in-game and scroll down to Options. It's a bit daunting, but works fine for all games after the settings are adjusted.

Extra Buttons Required

So, the standard machine has 6 buttons, a joystick and a 'start' button per player. This is great for Street Fighter on free-play, but not so good for a machine with multiple games. To get around this, I bought some arcade buttons from Jaycar and designed+printed a piece of plastic to house them off the side of the machine. I also had to but longer screws as the provided four only bit in about 2mm with the standard controller face.

DSC02800

The goal was an ATX power power switch (using the LED inside to act as the power LED), a coin button for each player and finally a reset-to-menu button. The final button's LED was also wired into the HDD activity LED.

DSC02820

This provided all the buttons required to play everything in the system. The Power button also nicely worked to shutdown the system, as a single press whilst the machine was running would cause a soft power-down!

Playlists

Lakka defines a playlist as a group of ROMs linked to an engine, under an icon in the main menu. It tried to guess all this by itself when you do a full directory scan and it's gotten it wrong every time I've used it. Your best bet is to dump all your ROMs over in one hit, run the scan directory, then jump back on the network share and merge the lists.

lakkalists

You can see above that I had Final Burn up there somehow as well? All the ROMs I introduced were just for MAME, so I have no idea how it CRC-matched them to another system. Anyway, the merging is simple as the file-format is JSON. Once done, delete the old files and restart retro-arch.

Finally, don't expect everything to work...

Just dragging and dropping ROMs from your downloads to the game machine, scanning and running will work with limited success. When you're acquiring things, make sure you check the hierarchy on some sites as they show you that, more-often-than-not, parent ROMs are required. Some ROMs are just old dumps with internal files missing in the ZIPs, so get ready to merge and re-test.

One note with Lakka is that it doesn't easily tell you what the issue is. Usually you'll just get a "Failed to load xXX". When this happens, SSH into the machine and type the following:

Lakka:~ # systemctl stop retroarch
Lakka:~ # retroarch -v
[INFO] RetroArch 1.8.4 (Git 9e25601a56)
[INFO] === Build =======================================
[INFO] CPU Model Name: AMD Phenom(tm) II X4 945 Processor
[INFO] Capabilities:  MMX MMXEXT SSE SSE2 SSE3
[INFO] Built: Jan 20 2020
[INFO] Version: 1.8.4
[INFO] Git: 9e25601a56
[INFO] =================================================
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Redirecting save file to "/storage/savefiles/.srm".
[INFO] Redirecting savestate to "/storage/savestates/.state".
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 30000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[INFO] [Video]: Starting threaded video driver ...
[INFO] [DRM]: Found 2 connectors.
[INFO] [DRM]: Connector 0 connected: no
[INFO] [DRM]: Connector 0 has 0 modes.
[INFO] [DRM]: Connector 1 connected: yes
[INFO] [DRM]: Connector 1 has 29 modes.
[INFO] [DRM]: Connector 1 assigned to monitor index: #1.
[INFO] [DRM]: Mode 0: (1280x1024) 1280 x 1024, 60 Hz
[INFO] [DRM]: Mode 1: (1920x1080) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 2: (1920x1080) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 3: (1920x1080i) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 4: (1920x1080i) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 5: (1920x1080) 1920 x 1080, 50 Hz
[INFO] [DRM]: Mode 6: (1920x1080i) 1920 x 1080, 50 Hz
[INFO] [DRM]: Mode 7: (1280x960) 1280 x 960, 60 Hz
[INFO] [DRM]: Mode 8: (1280x720) 1280 x 720, 60 Hz
[INFO] [DRM]: Mode 9: (1280x720) 1280 x 720, 60 Hz
[INFO] [DRM]: Mode 10: (1280x720) 1280 x 720, 50 Hz
[INFO] [DRM]: Mode 11: (1024x768) 1024 x 768, 75 Hz
[INFO] [DRM]: Mode 12: (1024x768) 1024 x 768, 70 Hz
[INFO] [DRM]: Mode 13: (1024x768) 1024 x 768, 60 Hz
[INFO] [DRM]: Mode 14: (800x600) 800 x 600, 75 Hz
[INFO] [DRM]: Mode 15: (800x600) 800 x 600, 72 Hz
[INFO] [DRM]: Mode 16: (800x600) 800 x 600, 60 Hz
[INFO] [DRM]: Mode 17: (800x600) 800 x 600, 56 Hz
[INFO] [DRM]: Mode 18: (720x576) 720 x 576, 50 Hz
[INFO] [DRM]: Mode 19: (720x576i) 720 x 576, 50 Hz
[INFO] [DRM]: Mode 20: (720x480) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 21: (720x480) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 22: (720x480i) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 23: (720x480i) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 24: (640x480) 640 x 480, 75 Hz
[INFO] [DRM]: Mode 25: (640x480) 640 x 480, 73 Hz
[INFO] [DRM]: Mode 26: (640x480) 640 x 480, 60 Hz
[INFO] [DRM]: Mode 27: (640x480) 640 x 480, 60 Hz
[INFO] [DRM]: Mode 28: (720x400) 720 x 400, 70 Hz
[INFO] [GL]: Found GL context: kms
[INFO] [GL]: Detecting screen resolution 1280x1024.
[INFO] [EGL] Found EGL_EXT_platform_base, trying eglGetPlatformDisplayEXT
[INFO] [EGL]: EGL version: 1.4
[INFO] [EGL]: Current context: 0x7f4e14057910.
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).
[INFO] [GL]: Vendor: X.Org, Renderer: Gallium 0.4 on AMD RS880 (DRM 2.49.0 / 4.11.12-rt14, LLVM 3.9.0).
[INFO] [GL]: Version: 3.0 Mesa 17.1.3.
[INFO] [GL]: Using resolution 1280x1024
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB ...
[INFO] [GLSL]: Compiling ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling simple ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling modern snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling bokeh shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snowflake shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[INFO] [udev]: Keyboard #0 (/dev/input/event3).
[INFO] [udev]: Mouse #0 (/dev/input/event4).
[INFO] [udev]: Mouse #1 (/dev/input/mouse0).
[INFO] [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (121:6) on port #0.
[INFO] [udev]: Pad #0 (/dev/input/event2) supports force feedback.
[INFO] [udev]: Pad #0 (/dev/input/event2) supports 16 force feedback effects.
[INFO] [Autoconf]: 306 profiles found.
[INFO] [Autoconf]: selected configuration: /tmp/joypads/udev/DragonRise_N64.cfg
[INFO] [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (121:6) on port #1.
[INFO] [udev]: Pad #1 (/dev/input/event5) supports force feedback.
[INFO] [udev]: Pad #1 (/dev/input/event5) supports 16 force feedback effects.
[INFO] [Autoconf]: 306 profiles found.
[INFO] [Autoconf]: selected configuration: /tmp/joypads/udev/DragonRise_N64.cfg
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Video]: Found display server: null
[INFO] Found shader "/tmp/shaders/bilinear.glslp"
[INFO] Found shader "/tmp/shaders/nearest.glslp"
[INFO] Found shader "/tmp/shaders/slang-conversion-template.glsl"
[INFO] Found shader "/tmp/shaders/stock.glsl"
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 1024 frames
[INFO] ALSA: Buffer size: 2048 frames
[INFO] [Menu]: Found menu display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Menu]: Found menu display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0xa969a0
[INFO] [MIDI]: Initializing ...
ALSA lib /home/natinusala/release/Lakka-LibreELEC/build.Lakka-Generic.x86_64/alsa-lib-1.1.9/src/seq/seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
[ERROR] [MIDI]: snd_seq_open failed with error -2.
[ERROR] [MIDI]: Initialization failed (list of input devices unavailable).
[INFO] SRAM will not be saved.
[INFO] Loading history file: [/storage/.config/retroarch/content_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_music_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_video_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_image_history.lpl].
[INFO] Loading favorites file: [/storage/.config/retroarch/content_favorites.lpl].
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).

From here, you'll now get the full dump when you try to run a game...

[INFO] Using content: /storage/roms/1942.zip.
[INFO] arg #0: retroarch
[INFO] arg #1: /storage/roms/1942.zip
[INFO] arg #2: -s
[INFO] arg #3: /storage/savefiles
[INFO] arg #4: -S
[INFO] arg #5: /storage/savestates
[INFO] arg #6: -c
[INFO] arg #7: /storage/.config/retroarch/retroarch.cfg
[INFO] arg #8: -L
[INFO] arg #9: /tmp/cores/mame2003_plus_libretro.so
[INFO] Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] Unloading game..
[INFO] Unloading core..
[INFO] Unloading core symbols..
[INFO] Threaded video stats: Frames pushed: 4640, Frames dropped: 0.
[INFO] Set config file to : /storage/.config/retroarch/retroarch.cfg
[INFO] RetroArch 1.8.4 (Git 9e25601a56)
[INFO] Redirecting save file to "/storage/savefiles/1942.srm".
[INFO] Redirecting savestate to "/storage/savestates/1942.state".
[INFO] === Build =======================================
[INFO] CPU Model Name: AMD Phenom(tm) II X4 945 Processor
[INFO] Capabilities:  MMX MMXEXT SSE SSE2 SSE3
[INFO] Built: Jan 20 2020
[INFO] Version: 1.8.4
[INFO] Git: 9e25601a56
[INFO] =================================================
[INFO] Loading dynamic libretro core from: "/tmp/cores/mame2003_plus_libretro.so"
[INFO] [Overrides] no core-specific overrides found at /storage/.config/retroarch/config/MAME 2003-Plus/MAME 2003-Plus.cfg.
[INFO] [Overrides] no content-dir-specific overrides found at /storage/.config/retroarch/config/MAME 2003-Plus/roms.cfg.
[INFO] [Overrides] no game-specific overrides found at /storage/.config/retroarch/config/MAME 2003-Plus/1942.cfg.
[INFO] [Remaps]: remap directory: /storage/remappings
[INFO] Redirecting save file to "/storage/savefiles/1942.srm".
[INFO] Redirecting savestate to "/storage/savestates/1942.state".
[INFO] [Environ]: GET_LOG_INTERFACE.
[INFO] [Environ]: PERFORMANCE_LEVEL: 10.
[INFO] Content loading skipped. Implementation will load it on its own.
[libretro INFO] [MAME 2003+] Full content path /storage/roms/1942.zip
[libretro INFO] [MAME 2003+] Git Version  fcb70939
[libretro INFO] [MAME 2003+] Content lookup name: 1942
[libretro INFO] [MAME 2003+] Driver index counter: 1686. Matched game driver: 1942
[libretro INFO] [MAME 2003+] Content identified as using 8-way joystick controls.
[libretro INFO] [MAME 2003+] Content identified by controls.c as having joysticks on axis with respect to the cabinet.
[libretro INFO] [MAME 2003+] Content identified as supporting 2 players with 2 distinct controls.
[libretro INFO] [MAME 2003+] Content identified as supporting 2 button controls.
[libretro INFO] [MAME 2003+] Content identified by controls.c as having mirrored multiplayer control labels.
[INFO] [Environ]: SYSTEM_DIRECTORY: "/tmp/system".
[libretro INFO] [MAME 2003+] content path: /storage/roms
[libretro INFO] [MAME 2003+]  system path: /tmp/system
[libretro INFO] [MAME 2003+]    save path: /storage/savefiles
[INFO] [Environ]: SET_VARIABLES.
[INFO] [Environ]: SET_CONTROLLER_INFO.
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n3a.bin
[libretro ERROR] [MAME 2003+] 1-n3a.bin    NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n4.bin
[libretro ERROR] [MAME 2003+] 1-n4.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n5.bin
[libretro ERROR] [MAME 2003+] 1-n5.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n6.bin
[libretro ERROR] [MAME 2003+] 1-n6.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n7.bin
[libretro ERROR] [MAME 2003+] 1-n7.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-c11.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 1-f2.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a1.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a2.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a3.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a4.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a5.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-a6.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-l1.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-l2.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-n1.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 2-n2.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 08e_sb-5.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 09e_sb-6.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 10e_sb-7.bin
[libretro INFO] [MAME 2003+] Opening ROM file: f01_sb-0.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 06d_sb-4.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 03k_sb-8.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 01d_sb-2.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 02d_sb-3.bin
[libretro INFO] [MAME 2003+] Opening ROM file: k06_sb-1.bin
[libretro INFO] [MAME 2003+] Opening ROM file: 01m_sb-9.bin
[INFO] [Environ]: SET_MESSAGE: Required files are missing, the game cannot be run.

[libretro ERROR] [MAME 2003+] Required files are missing, the game cannot be run.
[libretro ERROR] [MAME 2003+] readroms failed
[ERROR] Failed to load content
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Redirecting save file to "/storage/savefiles/1942.srm".
[INFO] Redirecting savestate to "/storage/savestates/1942.state".
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 30000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[INFO] [Video]: Starting threaded video driver ...
[INFO] [DRM]: Found 2 connectors.
[INFO] [DRM]: Connector 0 connected: no
[INFO] [DRM]: Connector 0 has 0 modes.
[INFO] [DRM]: Connector 1 connected: yes
[INFO] [DRM]: Connector 1 has 29 modes.
[INFO] [DRM]: Connector 1 assigned to monitor index: #1.
[INFO] [DRM]: Mode 0: (1280x1024) 1280 x 1024, 60 Hz
[INFO] [DRM]: Mode 1: (1920x1080) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 2: (1920x1080) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 3: (1920x1080i) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 4: (1920x1080i) 1920 x 1080, 60 Hz
[INFO] [DRM]: Mode 5: (1920x1080) 1920 x 1080, 50 Hz
[INFO] [DRM]: Mode 6: (1920x1080i) 1920 x 1080, 50 Hz
[INFO] [DRM]: Mode 7: (1280x960) 1280 x 960, 60 Hz
[INFO] [DRM]: Mode 8: (1280x720) 1280 x 720, 60 Hz
[INFO] [DRM]: Mode 9: (1280x720) 1280 x 720, 60 Hz
[INFO] [DRM]: Mode 10: (1280x720) 1280 x 720, 50 Hz
[INFO] [DRM]: Mode 11: (1024x768) 1024 x 768, 75 Hz
[INFO] [DRM]: Mode 12: (1024x768) 1024 x 768, 70 Hz
[INFO] [DRM]: Mode 13: (1024x768) 1024 x 768, 60 Hz
[INFO] [DRM]: Mode 14: (800x600) 800 x 600, 75 Hz
[INFO] [DRM]: Mode 15: (800x600) 800 x 600, 72 Hz
[INFO] [DRM]: Mode 16: (800x600) 800 x 600, 60 Hz
[INFO] [DRM]: Mode 17: (800x600) 800 x 600, 56 Hz
[INFO] [DRM]: Mode 18: (720x576) 720 x 576, 50 Hz
[INFO] [DRM]: Mode 19: (720x576i) 720 x 576, 50 Hz
[INFO] [DRM]: Mode 20: (720x480) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 21: (720x480) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 22: (720x480i) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 23: (720x480i) 720 x 480, 60 Hz
[INFO] [DRM]: Mode 24: (640x480) 640 x 480, 75 Hz
[INFO] [DRM]: Mode 25: (640x480) 640 x 480, 73 Hz
[INFO] [DRM]: Mode 26: (640x480) 640 x 480, 60 Hz
[INFO] [DRM]: Mode 27: (640x480) 640 x 480, 60 Hz
[INFO] [DRM]: Mode 28: (720x400) 720 x 400, 70 Hz
[INFO] [GL]: Found GL context: kms
[INFO] [GL]: Detecting screen resolution 1280x1024.
[INFO] [EGL] Found EGL_EXT_platform_base, trying eglGetPlatformDisplayEXT
[INFO] [EGL]: EGL version: 1.4
[INFO] [EGL]: Current context: 0x7f4e0c045a50.
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).
[INFO] [GL]: Vendor: X.Org, Renderer: Gallium 0.4 on AMD RS880 (DRM 2.49.0 / 4.11.12-rt14, LLVM 3.9.0).
[INFO] [GL]: Version: 3.0 Mesa 17.1.3.
[INFO] [GL]: Using resolution 1280x1024
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB ...
[INFO] [GLSL]: Compiling ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling simple ribbon shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling modern snow shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling bokeh shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Compiling snowflake shader..
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[INFO] [udev]: Keyboard #0 (/dev/input/event3).
[INFO] [udev]: Mouse #0 (/dev/input/event4).
[INFO] [udev]: Mouse #1 (/dev/input/mouse0).
[INFO] [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (121:6) on port #0.
[INFO] [udev]: Pad #0 (/dev/input/event2) supports force feedback.
[INFO] [udev]: Pad #0 (/dev/input/event2) supports 16 force feedback effects.
[INFO] [Autoconf]: 306 profiles found.
[INFO] [Autoconf]: selected configuration: /tmp/joypads/udev/DragonRise_N64.cfg
[INFO] [udev]: Plugged pad: DragonRise Inc.   Generic   USB  Joystick   (121:6) on port #1.
[INFO] [udev]: Pad #1 (/dev/input/event5) supports force feedback.
[INFO] [udev]: Pad #1 (/dev/input/event5) supports 16 force feedback effects.
[INFO] [Autoconf]: 306 profiles found.
[INFO] [Autoconf]: selected configuration: /tmp/joypads/udev/DragonRise_N64.cfg
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Video]: Found display server: null
[INFO] Found shader "/tmp/shaders/bilinear.glslp"
[INFO] Found shader "/tmp/shaders/nearest.glslp"
[INFO] Found shader "/tmp/shaders/slang-conversion-template.glsl"
[INFO] Found shader "/tmp/shaders/stock.glsl"
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 1024 frames
[INFO] ALSA: Buffer size: 2048 frames
[INFO] [Menu]: Found menu display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0xa969a0
[INFO] [MIDI]: Initializing ...
ALSA lib /home/natinusala/release/Lakka-LibreELEC/build.Lakka-Generic.x86_64/alsa-lib-1.1.9/src/seq/seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
[ERROR] [MIDI]: snd_seq_open failed with error -2.
[ERROR] [MIDI]: Initialization failed (list of input devices unavailable).
[INFO] SRAM will not be saved.
[INFO] Loading history file: [/storage/.config/retroarch/content_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_music_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_video_history.lpl].
[INFO] Loading history file: [/storage/.config/retroarch/content_image_history.lpl].
[INFO] Loading favorites file: [/storage/.config/retroarch/content_favorites.lpl].
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).
[INFO] [KMS]: New FB: 1280x1024 (stride: 5120).

There's a lot of crap in the dump, but just scroll up to the ERROR lines and check out what's happening... i.e. the important part is:

...
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n3a.bin
[libretro ERROR] [MAME 2003+] 1-n3a.bin    NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n4.bin
[libretro ERROR] [MAME 2003+] 1-n4.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n5.bin
[libretro ERROR] [MAME 2003+] 1-n5.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n6.bin
[libretro ERROR] [MAME 2003+] 1-n6.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-n7.bin
[libretro ERROR] [MAME 2003+] 1-n7.bin     NOT FOUND
[libretro INFO] [MAME 2003+] Opening ROM file: 1-c11.bin
...

And that's a wrap! It works perfectly and I've customised my menus and have all my games running nicely!

Filed under: Retro No Comments
25Feb/210

HP Dual PIII-500 Motherboard

I had a good to-and-fro with the Seller on this item. He initially wanted ~AUD500 for it, so I low-balled just under 200. He didn't accept, but then proceeded to get zero bids. It was then re-listed at an auction price of AUD99 and didn't go for much more. If you look on eBay US, seems they're still fetching quite a few dollars! Anyway, it's a dual P3-500 board with on-board SCSI! Nice. The only thing I didn't know was what server it had been ripped out of.

DSC02154

DSC02155 DSC02158 DSC02159

DSC02165 DSC02173 DSC02188

Looking at the photos now, I see that there's a glaringly-obvious Hewlett Packard logo hidden below the AGP slot... something I totally missed when the board arrived. So instead, after a little googlin', I had determined that it was the motherboard from a HP Compaq Netserver E60. This was thanks to the "exchange" code/part-number of "D7140-63000" labelled on one of the ICs.

Front Panel Connector Pinout

Found that someone else had restored such a unit, but not so recently. A private message to the author saw no response. What did help though, were the pictures in that post. IT shows that there's no reset button? Just Power LED, Power Switch and HDD LED.

DSC02168

So, what to do? Grab a screwdriver and poke the pins! Actually, first I worked out which pin was ground via a multimeter. Turns out it's second-from-the-left, but there's only one ground, so that meant getting the LEDs lit will be tricky. After a bit more poking, the left-most pin was determined to be the power switch and, before I knew it, the motherboard speaker was beeping awfully as it had no Video or RAM.

DSC02191

HDD activity wasn't on the header, so I just used the connection directly on the SCSI drive.

A Suitable Video Card

I've had this crazy ATI Rage 128 All-In-Wonder in as box for ages and have never had a good reason to test it. Thankfully, this motherboard has AGP, so let's do it!

DSC02073

With this card in place, most of the operating systems I tried had issues. Drivers, resolutions, framebuffers... this card seems to be a bit of a Unicorn and really only good for Windows. Fortunately, a little bit of effort paid off and it ended up working on all systems. For future reference, here's a possible pinout for the video out breakout cable.

So, What RAM?

The manual indicates that the motherboard supports up to four SDRAM DIMMS, for a maximum total of 1GB. These are expected to be full server-grade and I had quite a few lying aorund. The actual specifications are: 64MB, 128MB, or 256MB unbuffered, 72 bits wide, ECC single-bit correcting, multi-bit detecting. So, those huge DIMMs in the box, with huge stickers and terms like 'sync':

DSC02149

Finally, I get to use the ECC SDRAM modules that seem to be very popular (i.e. in everyone's junk box gathering dust) and never usable in standard desktop motherboards! And, summing up what worked, I could only get to 384mb RAM. I tried mixing ECC and Non-ECC, but this threw a really ugly error. Interestingly it can obviously tell if the RAM DIMM is Non-ECC. Also mixing ECC 133mhz with 100mhz would throw shitty beeping. Finishing the RAM combination testing, I then just put in normal PC100 SDRAM and the bloody thing just booted straight up! No errors, no warning that this was pleb-RAM and not servah-RAM? This was a better option as I had enough laying around to get up to 512mb.

Microcode Update Block Missing

This error appears on HP NetServers when third-party CPUs are used which didn't come with a microcode block flashed onto them.

DSC02088

Could it be that these CPUs have just lost the block that had been previously flashed? Regardless, someone else has already solved this issue, but the link to HP for the new BIOS to flash is well gone! A quick google turned up this BIOS update, but it wants Windows and the filename ends in FR?... I'll get to that after I've mucked around with other OSsss.

Redhat Linux 7.2

And then for some Redhat! I already had the CDs burnt thanks to installing it on the Sony Vaio Z505. The installation was a breeze, but the installer did try to trick me into selecting the wrong video card.

DSC02079

DSC02091 DSC02095 DSC02097

Instead, choose the All-In-Wonder 20-ish lines above. Don't forget to test the mode!

DSC02098

Interestingly, as above, the mode worked fine during setup! Not so well once it then tried to boot... I'd selected the graphical login during install, so on first reboot, the machine produced a blank screen when it tried to load up XDM. It was still the correct resolution, but the whole machine had actually frozen up! No keyboard, no mouse, nothing... SSH wasn't running, so I couldn't connect underneath either! What to do? I could single-user and work out how to switch to text login, or re-install. I chose the latter to save time and effort.

Second time around, a login! startx still produced a blank screen though... at the correct resolution! I rebooted once more, but this time I logged in via SSH and ran startx remotely and...

Last login: Wed Feb 24 03:38:38 2021
[root@localhost root]# startx


XFree86 Version 4.1.0 (Red Hat Linux release: 4.1.0-3) / X Window System
(protocol Version 11, revision 0, vendor release 6510)
Release Date: 2 June 2001
        If the server is older than 6-12 months, or if your card is
        newer than the above date, look for a newer version before
        reporting problems.  (See http://www.XFree86.Org/FAQ)
Build Operating System: Linux 2.4.9-31smp i686 [ELF]
Build Host: stripples.devel.redhat.com

Module Loader present
(==) Log file: "/var/log/XFree86.0.log", Time: Wed Feb 24 03:43:04 2021
(==) Using config file: "/etc/X11/XF86Config-4"
Markers: (--) probed, (**) from config file, (==) default setting,
         (++) from command line, (!!) notice, (II) informational,
         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) ServerLayout "Anaconda Configured"
(**) |-->Screen "Screen0" (0)
(**) |   |-->Monitor "Monitor0"
(**) |   |-->Device "ATI All-in-Wonder 128 Pro AGP"
(**) |-->Input Device "Mouse0"
(**) |-->Input Device "Keyboard0"
(**) XKB: rules: "xfree86"
(**) XKB: model: "pc105"
(**) XKB: layout: "us"
(**) FontPath set to "unix/:7100"
(**) RgbPath set to "/usr/X11R6/lib/X11/rgb"
(==) ModulePath set to "/usr/X11R6/lib/modules"
(--) using VT number 7

(II) Loading /usr/X11R6/lib/modules/fonts/libbitmap.a
(II) Module bitmap: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/libpcidata.a
(II) Module pcidata: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 0.1.0
(II) Loading /usr/X11R6/lib/modules/libscanpci.a
(II) Module scanpci: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 0.1.0
(II) Unloading /usr/X11R6/lib/modules/libscanpci.a
(--) PCI:*(1:0:0) ATI Rage 128 RF rev 0, Mem @ 0xf8000000/26, 0xf4200000/14, I/O @ 0x9000/8
(II) Loading /usr/X11R6/lib/modules/extensions/libGLcore.a
(II) Module GLcore: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/extensions/libdbe.a
(II) Module dbe: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/extensions/libextmod.a
(II) Module extmod: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/linux/libfbdevhw.a
(II) Module fbdevhw: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 0.0.2
(II) Loading /usr/X11R6/lib/modules/extensions/libpex5.a
(II) Module pex5: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/extensions/libdri.a
(II) Module dri: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/linux/libdrm.a
(II) Module drm: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/extensions/libglx.a
(II) Module glx: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/extensions/librecord.a
(II) Module record: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.13.0
(II) Loading /usr/X11R6/lib/modules/extensions/libxie.a
(II) Module xie: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/drivers/r128_drv.o
(II) Module r128: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 4.0.1
(II) Loading /usr/X11R6/lib/modules/drivers/ati_drv.o
(II) Module ati: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 6.3.6
(II) Loading /usr/X11R6/lib/modules/input/mouse_drv.o
(II) Module mouse: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) ATI: ATI driver (version 6.3.6) for chipsets: ati, ativga
(II) R128: Driver for ATI Rage 128 chipsets: ATI Rage 128 RE (PCI),
        ATI Rage 128 RF (AGP), ATI Rage 128 RG (AGP), ATI Rage 128 RK (PCI),
        ATI Rage 128 RL (AGP), ATI Rage 128 SM (AGP),
        ATI Rage 128 Pro PD (PCI), ATI Rage 128 Pro PF (AGP),
        ATI Rage 128 Pro ULTRA TF (AGP), ATI Rage 128 Pro ULTRA TL (AGP),
        ATI Rage 128 Pro ULTRA TR (AGP), ATI Rage 128 Mobility LE (PCI),
        ATI Rage 128 Mobility LF (AGP), ATI Rage 128 Mobility MF (AGP),
        ATI Rage 128 Mobility ML (AGP)
(II) RADEON: Driver for ATI Radeon chipsets: ATI Radeon QD (AGP),
        ATI Radeon QE (AGP), ATI Radeon QF (AGP), ATI Radeon QG (AGP),
        ATI Radeon VE QY (AGP), ATI Radeon VE QZ (AGP),
        ATI Radeon Mobility LW (AGP), ATI Radeon Mobility LY (AGP),
        ATI Radeon Mobility LZ (AGP)
(--) Assigning device section with no busID to primary device
(--) Chipset ATI Rage 128 RF (AGP) found
(II) Loading /usr/X11R6/lib/modules/libvgahw.a
(II) Module vgahw: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 0.1.0
(II) R128(0): PCI bus 1 card 0 func 0
(**) R128(0): Depth 16, (--) framebuffer bpp 16
(II) R128(0): Pixel depth = 16 bits stored in 2 bytes (16 bpp pixmaps)
(==) R128(0): Default visual is TrueColor
(==) R128(0): RGB weight 565
(II) R128(0): Using 6 bits per RGB (8 bit DAC)
(II) Loading /usr/X11R6/lib/modules/linux/libint10.a
(II) Module int10: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) R128(0): initializing int10
(II) R128(0): Primary V_BIOS segment is: 0xc000
(--) R128(0): Chipset: "ATI Rage 128 RF (AGP)" (ChipID = 0x5246)
(--) R128(0): Linear framebuffer at 0xf8000000
(--) R128(0): MMIO registers at 0xf4200000
(--) R128(0): VideoRAM: 16384 kByte (128-bit SDR SGRAM 1:1)
(II) R128(0): PLL parameters: rf=2864 rd=63 min=12500 max=25000; xclk=9000
(II) Loading /usr/X11R6/lib/modules/libddc.a
(II) Module ddc: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/libvbe.a
(II) Module vbe: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) R128(0): VESA BIOS detected
(II) R128(0): VESA VBE DDC supported
(II) R128(0): Manufacturer: PTS  Model: 30d  Serial#: 214342
(II) R128(0): Year: 2005  Week: 22
(II) R128(0): EDID Version: 1.3
(II) R128(0): Analog Display Input,  Input Voltage Level: 0.700/0.700 V
(II) R128(0): Sync:  Separate
(II) R128(0): Max H-Image Size [cm]: horiz.: 34  vert.: 27
(II) R128(0): Gamma: 2.50
(II) R128(0): DPMS capabilities: Off; RGB/Color Display
(II) R128(0): First detailed timing is preferred mode
(II) R128(0): redX: 0.630 redY: 0.330   greenX: 0.300 greenY: 0.600
(II) R128(0): blueX: 0.148 blueY: 0.098   whiteX: 0.310 whiteY: 0.330
(II) R128(0): Supported VESA Video Modes:
(II) R128(0): 720x400@70Hz
(II) R128(0): 640x480@60Hz
(II) R128(0): 640x480@67Hz
(II) R128(0): 640x480@72Hz
(II) R128(0): 640x480@75Hz
(II) R128(0): 800x600@56Hz
(II) R128(0): 800x600@60Hz
(II) R128(0): 800x600@72Hz
(II) R128(0): 800x600@75Hz
(II) R128(0): 832x624@75Hz
(II) R128(0): 1024x768@60Hz
(II) R128(0): 1024x768@70Hz
(II) R128(0): 1024x768@75Hz
(II) R128(0): 1280x1024@75Hz
(II) R128(0): Manufacturer's mask: 0
(II) R128(0): Supported Future Video Modes:
(II) R128(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897
(II) R128(0): Supported additional Video Mode:
(II) R128(0): clock: 108.0 MHz   Image Size:  337 x 270 mm
(II) R128(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0
(II) R128(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0
(II) R128(0): Ranges: V min: 60  V max: 75 Hz, H min: 30  H max: 80 kHz, PixClock max 140 MHz
(II) R128(0): Monitor name: 17JAGBLK-AV
(II) R128(0): Serial No: P2U052214342
(==) R128(0): Using gamma correction (1.0, 1.0, 1.0)
(II) R128(0): Monitor0: Using hsync range of 30.00-80.00 kHz
(II) R128(0): Monitor0: Using vrefresh range of 60.00-75.00 Hz
(II) R128(0): Clock range:  12.50 to 250.00 MHz
(II) R128(0): Not using mode "1400x1050" (hsync out of range)
(II) R128(0): Not using mode "1400x1050" (hsync out of range)
(II) R128(0): Not using default mode "640x350" (vrefresh out of range)
(II) R128(0): Not using default mode "640x400" (vrefresh out of range)
(II) R128(0): Not using default mode "720x400" (vrefresh out of range)
(II) R128(0): Not using default mode "640x480" (vrefresh out of range)
(II) R128(0): Not using default mode "800x600" (vrefresh out of range)
(II) R128(0): Not using default mode "800x600" (vrefresh out of range)
(II) R128(0): Not using default mode "1024x768" (vrefresh out of range)
(II) R128(0): Not using default mode "1024x768" (vrefresh out of range)
(II) R128(0): Not using default mode "1280x960" (hsync out of range)
(II) R128(0): Not using default mode "1280x1024" (hsync out of range)
(II) R128(0): Not using default mode "1600x1200" (hsync out of range)
(II) R128(0): Not using default mode "1600x1200" (hsync out of range)
(II) R128(0): Not using default mode "1600x1200" (hsync out of range)
(II) R128(0): Not using default mode "1600x1200" (hsync out of range)
(II) R128(0): Not using default mode "1792x1344" (hsync out of range)
(II) R128(0): Not using default mode "1792x1344" (bad mode clock/interlace/doublescan)
(II) R128(0): Not using default mode "1856x1392" (hsync out of range)
(II) R128(0): Not using default mode "1856x1392" (bad mode clock/interlace/doublescan)
(II) R128(0): Not using default mode "1920x1440" (hsync out of range)
(II) R128(0): Not using default mode "1920x1440" (bad mode clock/interlace/doublescan)
(--) R128(0): Virtual size is 1280x1024 (pitch 1280)
(**) R128(0): Default mode "1280x1024": 135.0 MHz, 80.0 kHz, 75.0 Hz
(--) R128(0): Display dimensions: (34, 27) cm
(--) R128(0): DPI set to (95, 96)
(II) Loading /usr/X11R6/lib/modules/libfb.a
(II) Module fb: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(II) Loading /usr/X11R6/lib/modules/libramdac.a
(II) Module ramdac: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 0.1.0
(II) Loading /usr/X11R6/lib/modules/libxaa.a
(II) Module xaa: vendor="The XFree86 Project"
        compiled for 4.1.0, module version = 1.0.0
(==) R128(0): Write-combining range (0xf8000000,0x1000000)

And then the SSH session timed out. Seems that the card driver has tried to instantiate the DRM driver and frozen. A lot of mucking around then ensued, but the answer is simple: The r128 X11 driver didn't load the r128 DRM kernel module, so when it tries to call it, it just locks up. The answer is to run insmod r128 prior to starting X. Of course, this wont work if you've chosen to go for the graphical login. To get it to start on boot, edit /etc/rc.d/rc.local and slap the insmod line in there.

DSC02103

If you've already installed a distro and can't do anything as it boots to a black screen each time, then you need to edit your bootloader config to get linux to boot into single-user mode. For grub, hit E when the boot menu appears, select the second line and hit E again. Navigate to the end of the line and add the word single.

DSC02141 DSC02144 DSC02147

Hit enter and then press B. Linux will then boot, mounting disks, and provide a shell prompt with you already logged in as root. Just edit rc.local from here, inserting the insmod r128 command, and reboot. From here, all was working perfectly. I hadn't tested the All-In-Wonder features though... Looks like I'd need Gatos. The instructions don't look that hard.

Back to that BIOS update, can I use Wine?

Wine was installed by default, and so I wondered if I could run the BIOS updater from Linux? I wasn't ready to install XP/98SE/ME just yet. I downloaded the file and gave it a go:

[root@localhost root]# wine
wineserver: chdir /root/.wine : No such file or directory
[root@localhost root]# mkdir .wine
[root@localhost root]# wine
Wine release 20010731

Usage: wine [options] [--] program_name [arguments]
The -- has to be used if you specify arguments (of the program)

Options:
   --debugmsg name  Turn debugging-messages on or off
   --dll name       Enable or disable built-in DLLs
   --dosver x.xx    DOS version to imitate (e.g. 6.22)
                    Only valid with --winver win31
   --help,-h        Show this help message
   --managed        Allow the window manager to manage created windows
   --version,-v     Display the Wine version
   --winver         Version to imitate (win95,nt40,win31,nt2k,win98,nt351,win30,win20)
[root@localhost root]# wine e60bios_fr.exe
x11drv: Can't open display:

Ok ok, let's start X...

snapshot3

Ok sure, it's just a WinZip Self-Extractor that makes a floppy image... can we extract the image?

[root@localhost root]# unzip e60bios_fr.exe
Archive:  e60bios_fr.exe
  inflating: makeunix.bat
  inflating: disk1.img
  inflating: rawrite2.exe
  inflating: disks.ico
 extracting: about.txt

Yes, yes we can. We don't have to use rawrite as Linux has dd, but we'll just check what's in that batch file:

[root@localhost root]# cat makeunix.bat
@echo off
echo Hewlett Packard Company Self extracting diskette Set
echo.
echo You will need 1 formatted diskette(s) to continue
echo.
echo Press Enter to Continue or Cntrl-C to end the job
pause ^>nul:
echo.
echo Diskette Creation disk1
echo NetServer E60 BIOS Update Diskette
echo Press Enter to Continue or  Cntrl-C to end the job
pause ^>nul:
echo.
rawrite2.exe -f disk1.img

Nothing special... just a dump straight to floppy. Let's do that, Linux-style! Before I format this floppy... what's on it?

marist-wad

Oh, just a WAD for DOOM II of our high school. Excuse the crappy image... I was a little excited to find a floppy from a drawer with ~20 year old data on it?! I'll write another post on that. Where as I?

[root@localhost root]# dd if=disk1.img of=/dev/fd0 bs=1024 conv=sync ; sync
1440+0 records in
1440+0 records out
[root@localhost root]# cd /mnt
[root@localhost mnt]# mount floppy/
[root@localhost mnt]# ls floppy/
config.sys  contents.abf  e60bios.fr  io.sys  language.dat  msdos.sys  phlash.exe  phlshwrp.exe  phlshwrp.hds  phlshwrp.ini  platform.bin
[root@localhost mnt]# ls -l floppy/
total 688
-r-xr-xr-x    1 root     root           29 Aug 18  1998 config.sys
-r-xr-xr-x    1 root     root          305 Oct 27  2000 contents.abf
-r-xr-xr-x    1 root     root       524288 Oct 27  2000 e60bios.fr
-r-xr-xr-x    1 root     root        40992 May 31  1994 io.sys
-r-xr-xr-x    1 root     root            2 Dec 10  1998 language.dat
-r-xr-xr-x    1 root     root        38166 May 31  1994 msdos.sys
-r-xr-xr-x    1 root     root        65605 Feb  9  1999 phlash.exe
-r-xr-xr-x    1 root     root        21179 Jan 13  1999 phlshwrp.exe
-r-xr-xr-x    1 root     root         6791 Dec 31  1997 phlshwrp.hds
-r-xr-xr-x    1 root     root         1739 Oct 27  2000 phlshwrp.ini
-r-xr-xr-x    1 root     root         1207 Jan 22  1999 platform.bin

Nice, there's our boot disk. Time to shutdown and boot the machine with the floppy inserted.

DSC02109 DSC02116 DSC02120

Make sure your flexible disk is set to a higher priority than your solid disk. And then learn french! Or.... cheat...

DSC02123

Note that it did mistranslate one 0 for an 8, but whatever, just do the next-next-finish:

DSC02141 DSC02130 DSC02131

And then it'll reboot by itself:

DSC02139

Yey! Microcode 0000000E installed!

Dodgy LAN Port

For the life of me, I couldn't work out why I had intermittent LAN connectivity whilst using the machine. It wasn't until I checked the LEDs at the back on the port to see that sometimes none were lit, other times just link and then finally activity also. On my LAN, there's always activity thanks to streaming South Yarra Railcam, so it was very strange to see only link lit up.

A quick jiggle of the cable saw that all change though. If I forced the cable away from the board, the lights would go out. On the contrary, pulling the cable down towards the motherboard saw the LAN port function 100% correctly. It seems that the contacts inside the socket were not making a good enough connection with the end of the cable and needed adjusting. Fortunately, the tweezers from the iFixit kit worked perfectly for grabbing each of the 8 contacts and bending them up. At the very back of the plug is a guide for each contact to slide down when the LAN cable is inserted, so I just made sure not to lift the contact wires past/out-of these.

BeOS R5 Professional

This took a little bit of re-learning. After acquiring the ISO, everything just installed perfectly. Google even, sorta, showed in NetPositive. I then tried to set up World O' Networking and, after it restarted the network server, nothing worked anymore. Even a ping from Terminal just threw: ping socket: name not found. A google for this error brought up an Arstechnica forum post from 1999 where a user had the same error! I re-installed BeOS and the network worked again... I re-installed WON and it died again. Reading the doco, it said that if I wanted to uninstall WON thoroughly, I had to go to /beos/system/boot and edit Netscript. Turns out this file didn't even exist! The WON setup had failed to copy in its substitute and had just renamed the old file. I grabbed it manually from the desktop and then everything booted up! But there were no computers to be found in the WON folder on the desktop.

Windows XP

As you'd pretty much eXPect, it all just worked perfectly. All CPUs online and all hardware flying along.

winxp-dual-p3-500

I installed the ATI drivers and even managed to half-capture my shitty megadrive clone. The picture wasn't healthy, but I don't know if I was expecting it to even work, let along show a picture!

Filed under: Retro No Comments
26Sep/202

Repairing Atari 2600 Original Wireless Controllers

So, I've recently been repairing a large selection of Atari paraphenalia and, included in the container-load, was an official Atari-branded CX-42 wireless controller kit! The setup is pretty awesome; the base unit has a power input and then an output to go to the console. This means it doesn't need a separate power adapter as it chains into the power for your Atari. It then has the two controller plugs which you simply insert into the left and right controller ports on your console. Finally, the joysticks are more-or-less standard one-button Atari joysticks with extra 4cm bases to contain a 9v battery and radio circuitry.

DSC00668

DSC00674 DSC00671 DSC00698

Of course, this came to me due to being unhealthy. One of the controllers wouldn't go left! I'd usually associate this to cable failure, but... well... they don't really get much abuse in this scenario! They needed a good clean anyway, so the tear-down and diagnosis begun.

Is it the controller? (Hard way!)

So, just because I'd previously torn 100s of these apart, I went straight to the controller to check the internal switches. The construction of these is relatively simple, until you try to separate the joystick circuit board from the actual joystick... so many screws and springs fly everywhere. Regardless, once the unit was open, all switches were tested and found to be functional. I didn't think of taking a photo at the time, so you'll just have to imagine.

Is it the controller? (Easy way!)

After a little googlin', I stumbled across this hint stating that you could 'hear' the controllers using an FM radio. Hah, of course you can... It seems that they use frequencies down around ~40mhz, but somehow you can hear this at ~100mhz on your FM radio. So, what to do? Find an FM radio first. Fortunately I had some on the shelf thanks to wanting to listen to tapes a few months back.

On Windows 10, you'll find there's no more sndrec32. Instead you need to browse over here and Voice Recorder. Yey for anti-monopolistic effort! Anyway, I managed to record the following:

What you'll hear above is: Static -> radio station -> static -> radio station -> static -> weak carrier signal! -> misc. tuning -> STRONG CARRIER SIGNAL! -> 5 presses of the fire button -> ~7 full rotations of the joystick -> 6 presses of the fire button (the last one is longer) -> static. Totally random! But it's a great way to test.

As you can hear above, I started just above ~102mhz FM and scrolled down until I found the carrier signal. Note that I had difficulty originally finding the signal as it's not that strong. Make sure you hold the joystick against whatever FM receiver you're using.

Once the carrier signal was found, I then fine-tuned it until the signal was the strongest and began mashing buttons. Of course, just because LEFT is transmitting something, doesn't mean it's transmitting the correct signal! But hey, we can now check the base to see if there's any obvious issue.

Is it the base unit?

The circuitry inside this unit is, thankfully, quite easy to trace and diagnose. The unit consists of two individual circuits, decoding each controller independently. This is actually a life-saver, thanks to one of the joysticks being 100% functional! With my multimeter in-hand, I went ahead reviewing the circuit and measuring signals along the way. Doing this for both joysticks and both circuits meant that it was straight-forward to determine where the signal started going funny!

DSC00648

Starting from the output, there are two hex-inverter chips on each side. All 6 inverters (2chips x 3inverters) on each side are used and these flip the signal before sending it out to the controller port. The left button was seeing a twitch in the voltage, but not enough to flip the inverter to full +5v. The input was meant to drag to ground, sending the full signal out, but it wasn't happening.

Tracing the signal back, there is an OKI MSM4015RS IC and, for the life of me, I still can't find a datasheet online. I thought this would be a show-stopper, but after testing the signals on this IC for both joysticks when the fire button was pressed, it turns out they're both reporting the same values.

I therefore traced the value back up towards the output and found that the output after the first inverter wasn't being dragged low enough. It was 0.6v on the working joystick and 0.7v on the failing joystick. The output of the inverter is tied to ground with a green-cap and tied high with a 4.7k resistor.

The resistor checked out, but I had no way to test the capacitor with my multimeter. Instead, I swapped the capacitor from joystick one's side to joystick two's. Surprisingly, this now saw joystick one's LEFT button working and joystick two's was now faulty. Nice!

Replacing all green-caps

You'll find three different-valued sets of green-caps on this board: 10x 183k100v (18nf), 10x 223k100v (or 2A223K) (22nf) and 6x 104k100v (100nf). I went ahead and purchased a full set of them from Jaycar with the goal to replace every one of them.

DSC00677

Who knows how close another is to frying?

DSC00696

The aftermath... (did I say only the green-caps? Ooops.. I didn't discriminate and took out the electros as well.)

DSC00701

Removing and replacing was easy enough. I really recommend Goot-Wick desoldering braid for cleaning up the PCB whilst you're doing things like this.

Now up doesn't work?

Hah, seems that enough plugging-and-un-plugging of the controller output cables from the main board caused one pin to fail. Thanks to standard technology, there were plenty of these plugs in my junk box, although not with the same pin count...

DSC00687

So I borrowed an internal connector from a three-pin plug and soldered it in. Worked perfectly!

A minor note on the usage of these wireless controllers

With the wireless base unit powered-on and fully-connected to your Atari, it'll send spurious/erratic/totally-crazy signals to the console on the joystick cable of any joystick that is turned off! There is therefore a correct sequence for powering everything up... Turn the joysticks on first and then the base unit. Note that the base unit doesn't have a power switch, so I'd recommend always turning it off at the wall. I suppose you could then leave the Atari power switch on, as you'll be using the wall switch as the power cable is chained through the wireless controller receiver. Just make sure that both controllers are powered on BEFORE you turn on the wall switch!

When I was first diagnosing this kit, I thought all was pointless after seeing the random signals coming out of the base unit. I was very happy to see the signals settle once the joysticks were powered up!

Testing

This unit worked splendidly with 2600-series consoles and games.

DSC00708

Even 2600 games in a 7800 console. What didn't work was the built-in asteroids for/on the 7800.

DSC00712

For some reason, the down and fire buttons won't work. Of course, a standard 1-button Atari 2600 joystick works fine on 7800-Asteroids, but this unit doesn't. I did a little digging and found that the pins aren't brought straight to ground... instead they hover around 150-250 ohms... I wonder if that's enough to not send through a proper button press? Also, they seem to 'repeat'... the multimeter actually goes pretty damn crazy when a button is pressed, beeping on and off as the resistance floats near-zero. As mentioned above, each output is tied high by a 4.7k resistor and low by a 22nf green-cap capacitor. I assume the cap is there to de-bounce the incoming signal, but maybe it's not big enough to trigger a single press for the 7800? I don't want to modify this unit as it's very original, so I'll just suggest that if anyone else wants to use this on a 7800 then they should tinker with the pull-down capacitors on the output lines.

Again, they worked 100% perfectly with all 2600-series equipment I tested.

Battery Cover

One was missing, so I used my Creality CR6-SE to bring a replacement. It didn't turn out toooooo bad. Works well when there's a battery inside... falls out when there's no battery!

DSC00715 DSC00716 DSC00718

DSC00722

Filed under: Retro 2 Comments
5Sep/200

Philips CDI 450 – Laser Replacement

The Philips CD-i (Compact Disc-Interactive) brand/tech was released back in 1990 to add a level of interactivity to CD-ROM based entertainment. Philips, from 1990 through to 1998, produced and released multiple devices for both the home and educational markets based on this technology. One of those models was the CDI 450 and I just happened to stumble across one a long time back at a Belgian flea market. It's been in a box for quite a while and I've only just gotten around to looking at it... The driving factors were: #1 COVID lockdown is driving me crazy and #2 there's a version of The 7th Guest for this unit!

DSC00507

The unit came with the power supply, a controller with it's face missing and, randomly, a game CD in the drive.

DSC00513 DSC00510 DSC00509

The controller was obviously useless, so I went to GAME OVER? in Amsterdam and picked up the cheapest controller I could find.

DSC00586

There's the standard rule of 'sunk cost' where you don't spend large amounts of money on something that could be dead. I then returned to Australia and the unit has been in the box since. Only recently did I turn it on...

DSC00519 DSC00523 DSC00524

DSC00532

Cool! It works! My French is rusty, so I wanted to try and get other games working. No matter what I tried, the unit would not read CDRs. Every google search I tried lead me to believe that the laser was gone, or going, so I scoured eBay for a replacement. It turns out that searching for VAM-1201 will give you shops in China that have the exact 'new old stock' component that I needed! I ordered one, expecting it to take years, instead having it arrive in just under two weeks!

DSC00537

Popping open the CDI was easy enough. There are four screws in the unit. Two are in the CD bay and two are in the 'optional module area' to the left. Open the CD lid and then remove the plastic shell to the left. It has two clips that need to be pushed in. Woah, what's this? My unit has the Digital Video Cartridge!

DSC00538 DSC00540 DSC00542

With the screws out, you'll now find the RF shield in the way... remove this evenly, prying it up from each corner and making sure there are no wires in the way.

DSC00544

Mine had a lovely amount of discolouration... maybe from the rain that was falling in the flea market in Belgium? Fortunately the motherboard looked pristine.

DSC00547

The Laser aparatus consists of the laser unit and drive motor in a plastic housing, attached to a metal plate via rubber suspension joints. This whole component is held in place by the two screws from the main case and two plastic lugs along the top frame. Gently lift the whole lot, evenly pulling it up. The top two lugs are quite tight, to make sure to ease the unit vertically away from them until it's free. Once done, don't lift too high as you'll first need to disconnect the data ribbon cable and power cables underneath.

DSC00549

Once done, you then need to remove the laser unit from the metal plate. It's held there by four rubber spacers. Note that these are old now, so be very gentle when sliding them out laterally from the slots in the laser housing. I managed to break one when doing so, but fortunately this didn't impact the ability of the unit.

DSC00560

Once you've slotted the new laser on the housing, place it back into the main unit. This is as simple as lining up the lugs at the top, holding the unit at 45-degrees whilst doing so. Note that the wired cable might be longer than the original... just place the wires somewhere in the spacing to the bottom-right. Also make sure the wires don't get pinched when you place the RF shielding back in!

From here? We test...

DSC00562 DSC00563 DSC00564

DSC00565

DSC00567 DSC00569 DSC00571

DSC00572 DSC00573 DSC00574

And the icing on the cake:

DSC00582

A perfect game to test out the DVC! It worked very very nicely.

Filed under: Retro No Comments
1Sep/200

Atari 2600 Jr – Reset/Select Switch Repairs

I'd recently come across an Atari 2600 Jr with faulty select and reset buttons. Turns out that the mylar strip that conducts the button presses to the motherboard is toast. It doesn't conduct anything at all and I can't work out exactly where the break is.

DSC00424

To test if the button area even works, you can insert wires as above and check for continuity. In this case, they did, so I considered the following options to repair them.

Silver Conductive Pen

This nearly worked, but I couldn't get the paste to set correctly. The pen is from Jaycar and the basic idea is to draw a line where you want the circuit and let it set. I drew some pretty bad lines on the plastic film, but my first attempt seems to have failed as I drew the tracks too thickly. The 'ink' only becomes conductive once it's totally dry and I'm blaming winter and the fact that I don't have an incandescent bulb in the house anymore.

DSC00428 DSC00431 DSC00432

The next attempts were seemingly too thin. It also seems that you can't 'restart' a trace... the joint isn't conductive? Finally, the resistance seen down the track is totally erratic... but that may also be due to wet ink.

Threaded Wire

I punched a few holes in the mylar and threaded copper wire through. It was a little too stiff but, once in-place, seemed to work quite well! The main issue with this method is that, at either end of the plastic strip, adhering the wire to the conductive trace is difficult. Of course, at the motherboard end you can just jam the wires in the socket!

DSC00436

At the button end, you need to slip it in under the top-layer of plastic. I didn't feel confident that I could keep a valid joint and therefore didn't pursue this technique.

Microswitches

Prior to opening and testing the methods above, I was always intending on just replacing whole plastic strip with microswitches. There's a nice plastic base behind the push buttons and one could easily drill in some switches. This would also give a nice tactile experience to what is (from the factory) a really awful and mushy button press.

DSC00444

I went ahead and drilled holes slightly smaller than the switches. From here, I gouged out the rest of the required space as I wanted a tight fit. Of course, I was imagining things thinking that I tight fit would be enough to hold the switches in place... a hard button-press would probably send them into the case.

DSC00449 DSC00451 DSC00458

Therefore I glued a strip of plastic (yeah, it's a cable-tie) along the back of the holes as a backing plate for the switches. This worked perfectly! I probably should've soldered the wiring first, but it was easy enough once the switches were in position!

DSC00467

Once it was all back together, it turns out that the buttons were pressed in 100% of the time. To fix this, I had to drill out a section of the plastic where the button meets the switch. This worked nicely. I then decided to remove the rubber as the press was being overly-softened by it. I'd recommend you test it both ways to see which feels the best... you can also try mounting the rubber on the actual case to make sure the alignment is correct.

DSC00481 DSC00478 DSC00486

From here, I just soldered the wiring up to a standard pin-header which fit snugly into the socket on the motherboard.

DSC00487

Testing began and the switches performed perfectly!

Filed under: Retro No Comments
9Jul/204

Atari Portfolio

This item popped up on eBay recently and I was very happy to have my offer accepted. The unit came even with a serial adapter! I quickly found 3 AA batteries and inserted them...

DSC00210

DSC00206 DSC00208 DSC00209

The Atari Portfolio is an IBM-compatible 'Palm-top' PC from 1989. If you were paying attention whilst watching Terminator 2, then you would've noticed it was used to break into an ATM. You can even still download the software they used to fake the hack. The unit itself is just bigger than a VHS cassette, but the profile changes once you attach the serial port adapter.

DSC00212

DSC00214 DSC00215 DSC00217

DSC00220

The unit is DOS 2.x compatible, with a few apps already built in. There's a text editor, spreadsheet, calendar and phone book. When I read that it had these features, I instinctively just typed edit on the command line when the unit first powered up. The response of Bad command or program not found came as a slight surprise, but then I thought that it must have another name as it's not official MS-DOS. I then tried ed, editor, nano, emacs, vim... all to no avail. It wasn't until I looked a little closer at the keyboard that I saw that 'Editor' was the Atari-text (the function that executes when the Atari button is held down) under the E key! Nice! It's actually multitasking?

Using the text editor

Just because I found this slightly harder-than-expected, here's a quick primer. The text editor is actually really cool and can be opened by pressing Atari+E. Use Fn-1 (aka. F1) to get to the File menu to start a new file, open a file, etc. F2 gives you a help menu and I seriously recommend that you go through the items in the list. There's a ton of shortcut keys that'll come in handy. F3 is the clipboard menu with options for copying and pasting. At any time, Escape will exit menus and even exit the app right back to the command prompt.

DSC00222

Note, when opening files: if you don't know the file name then just type an asterisk and press enter to get a list of 'openable' files from the hard drive. For fun, I created a simple text file with a random sentence and saved it to C:\. This became useful when testing the serial port.

Note that, at any point in time, Fn + O will turn the unit off. Spacebar will wake it back up.

Initiating serial communications

My unit came totally blank, so I had to fumble my way through getting files transferred over to it. For those playing at home, what follows is the most-simple step-by-step process to get it up and running. These steps were borrowed and modified from Paul Rickard's blog post titled Atari Portfolio Serial Interface: How To Get Terminal Software.

DSC00218

Firstly, we'll need a cable to connect your PC to the Atari. I happened to have a USB-Serial adapter that Windows 10 was happy to use, so I plugged that in and grabbed the relevant converters to get from DB-9 to the DB-25 Null-Modem adapter that I had in the junk box.

Download and extract CoolTerm and get it up and running. Set the 10ms delay option and choose 300 BAUD rate with no hardware controls.

coolterm-port-settings coolterm-delay-settings coolterm-no-settings

Power up the Atari and open Set Up via Atari+S. Configure the serial port to BAUD 300, leaving the other settings alone. Make sure you select Initialize! at the end. Next , open the Editor and type a sentence, saving the file to C:\. It'll default to unnamed.txt. With CoolTerm open and connected, type the following:

copy unnamed.txt com1

DSC00224 DSC00225 DSC00226

coolterm-recvd

If you're in luck, the file will have been spat out to the CoolTerm console. If not, then go over everything again... specifically making sure that your cabling is correct!

Transferring actual files

For those that have a valid connection, you can now try and transfer files. Using the DOS copy method above, I tried to copy files bigger than 1kb, but it always failed. Even with CoolTerms transmit delays, I couldn't successfully do it. This is probably the reason why Paul has used xload/xterm. So, the next step is to set up a proper terminal app on the Atari. To do this, you'll need to download both xload and xterm and extract them somewhere.

We'll first use the basic DOS copy command to get xload.com over. It's a tiny file that does the same as DOS copy, but has the ability to copy larger files. To get this over, type the following in the Atari, but don't hit enter:

copy com1 xload.com

Now, on CoolTerm, choose Connection -> Send Text/Binary File. Set the filter to all files and find xload.com. Select it, but don't hit Open just yet. You'll want to hit enter on the Atari, wait around 3 seconds and then hit Open on CoolTerm.

coolterm-send-file coolterm-sending DSC00227

The Atari wont flinch, but you'll hopefully have a transfer window in CoolTerm flash past (it doesn't stay open as the file is so small) and the file will be transferred. A few seconds later, DOS will drop you back to the prompt and you can list your files to see what copied over. If you have an xload.com with a size of 178 bytes, then you've succeeded. Type xload and see what happens. If it has failed, or it's the wrong size, then repeat the steps above until it works!

With xload now on your Portfolio, you can use CoolTerm once more to send the larger xterm.com file. xload will only ever copy serial bytes to a file called xterm.com, so don't try and use it for anything else. So, in CoolTerm, select to transfer a file and get ready to hit Open on xterm.com. On the Atari, type xload and press enter. Once you see the screen below, hit Open on CoolTerm. Note that at this point you have the option to switch the BAUD on both units to 1200... I left it at 300 for safety-sake.

After a successful copy, you should have xterm.com in your C:\ at a ginormous size of 2944 bytes.

Type xterm and hit enter... crossing your fingers at the same time.

DSC00229

Nice... trashed binary. I re-did everything again and sent exactly the same... maybe I left it a second longer between hitting enter on xload and choosing Open on CoolTerm...

DSC00231

Yessss! We have a terminal application. xterm on the Atari supports XModem file transfers, but I couldn't work out how to do this with CoolTerm. I was on Windows 10 and managed to find two applications that can do XModem: Hyper Terminal and ExtraPuTTY. For fun... we'll use the former:

hypertrm-test

Hah. It still runs on W10... so ugly. It'll throw crappy errors at the start, telling you that you need a modem installed... just ignore/skip/cancel where appropriate.

hypertrm-modem-1 hypertrm-modem-2 hypertrm-test

Configure your serial port exactly as you'd done in CoolTerm, turning off any flow control. You can then open xterm on the Atari, choose F2 and send the files from Hypertrm via XModem.

hypertrm-send hypertrm-send-file hypertrm-sending

If it's working, then you'll see the dots across the screen... if you don't send via XModem, then the guts of the file will be printed out to the Atari and shit will get weird!

DSC00232 DSC00234 DSC00235

Transferred and executable!

Games and other software

Most Atari Portfolio software is compressed as LZH. 7-Zip had trouble with most of the files I downloaded, so I had to grab an archiver and do the extraction on the unit. As that there's very little spare space on C:\, this became quite a shuffle. For example, there's a file called yankee.lzh which plays the Yankee Doodle Dandy tune. To decompress it, you'll need lzhe.com on the Atari as well. Transfer both files using xterm and then try and extract the files by running lzhe yankee.lzh. It'll fail on the last file as xterm + xload + lzhe + yankee.lzh + half of the extracted files take up the entire internal storage. To fix this, delete xterm as you don't need it anymore. Leave xload as it'll help when you need to bring xterm back. Inside the LZH file is ptune and it's documentation. The .doc file is actually useless to us, so delete it and then use the editor to create a file of the same name with 0 bytes in size. When you then try to extract the contents of Yankee again, it'll ask to overwrite, but just say no. Finally you'll have yankee.bat that, when executed, will play the tune (poorly) and present the lyrics...

All of this shuffling would be circumvented if I had a memory card in the left-hand slot!

Memory cards

Atari chose the Mitsubishi Bee Card as their memory card type. This card allowed sizes ranging from 32Kb to 128Kb. Any memory cards with larger sizes were 'banked' and required powering off, switching banks and rebooting. The Bee Card was also used in MSX and Korg/Roland music equipment, and so you'll find that there are a variety of options when trying to source cards. There are also home-brew multi-cards, such as this one, if you have the cash and if COVID won't stop your shipments.

Filed under: Retro 4 Comments
24Jun/200

Quantum Bigfoot 4320AT

I remember these drives... they became available around the time I had a Cyrix CPU and an S3 graphics card. We were not willing to cough up for a proper Pentium ~200mhz. Anyway, these were the budget drives also, making use of space instead of enhancing technology to fit more bytes in smaller places!

DSC00148

DSC00151 DSC00156 DSC00157

DSC00154

The Quantum Bigfoot pictured above is the 4320AT model, meaning it's listed capacity is 4.3gb. Of course, partitions never manage to give a drive's entire space to the user, so a FAT32 partition via USB-IDE via Windows 10 formatted out to 4.03gb.

DSC00149

This drive usually wouldn't even warrant a mention, but this model has a specifically interesting feature. It also seems quite rare, since googling didn't result in too many versions of this style of Bigfoot. Looking above, you'll see a transparent sticker over a window in the drive. It's actually a window that exposes the read heads! That's a really strong sticker... or so I hope, I haven't tried to remove it. Regardless, it lets you actually see the head has stopped when it's powered off... better yet, you can even watch it move when it's in operation!

Totally random! And amazing to watch!

Filed under: Retro No Comments