Subscribe via RSS
27Aug/210

The Royal Express Visits Hokkaido (Again)

It's been a while, and there's a lot to post, but for now I'm catching up on trains. Actually, this isn't catching up at all... this train is touring Hokkaido as we speak. The Royal Express is a ridiculously beautiful electric set train that runs (usually) from Yokohama to Izu-Shimoda on the Izu Peninsula, but, due to Tokyu Corporation being perfectly adventurous, is running on non-electrified lines in Hokkaido!

It's an ELECTRIC TRAIN! You say? There's very few overhead wires in Hokkaido, you exclaim!? You'd be correct! To run this tour, they have employed two freshly-painted DE15 locomotives and a mail-car-come-generator-car painted in white, to (literally) tow the electric train through the beautiful pastures of Hokkaido.

Thanks to the current world order: we can't travel from Australia to Japan, but thankfully we can watch! Japan has a fantastic acclimation to rail-side webcams and a hotel in Obihiro has actually mounted one on their building with a perfect view of the station. The same team have also provided views of the airport and a famous bridge. Note that these links change all the time, so please just browse to their channel to find what they're offering!

Anyway, where was I? Oh yeah.. the tour train has actually already operated this route twice this season. Thanks to lockdown, I haven't been in any correct frame to be alert to its movements. Or maybe I was just working? The train passes the Obihiro Station webcam just after 4pm Australian Eastern Time and, well, it's knock-off for anyone starting on-or-prior to 8am.

Fortunately, I set my alarm today and caught it!

So yeah, double-DE15 + white power van + Royal Express EMU. Who would've ever thought to tow an EMU on 'genny'-power with two very light-weight diesels!? It's actually amazing on a many levels: reliability, engine-weight, loading-gauge... the list goes on.

Anyway, for those playing at home, Obihiro Station is a major freight-accepting town (the yard is further to the left/west of the camera), but has single-lines on either side. This means that, if you see a train, regardless as to whether it's meant to actually stop at Obihiro, it'll at least pause on the camera as there's line-working preventing it from proceeding. There are freight, Limited Express Tokachis (to the west) and Limited Express Oozoras (both directions) on the line at all times and there's always another service to wait for.

So yeah, it waited... and the westbound Oozora from Kushiro arrived.

Not long after, The Royal Express departed for Ikeda and the Oozora went onwards to Sapporo. From here it'll do a full loop, turning north at Kushiro (I want to do that next!) to Kitami and then back through Asahikawa. When this current world situation is over, I'll be doing the same!

Update: 04/09/2021

The Express De Royale has left on another lap, in delicious sunshine:

Enjoy patrons, enjoy.

Filed under: JPN No Comments
27Jul/210

DCC via an Arduino!

And now, back to the topic that started this entire blog: DCC! Back then, I was creating breadboard circuits to get a PC to talk DCC, and although it worked, it has now been made much easier thanks to the Arduino platform. All you need is a motor shield and an Arduino Mega! It seems that DCC on the Arduino started as a project named DCC++. Sometime around 2016, the 'great rewrite' occurred and DCC++EX was born. What follows is what's required to get this up and running in no time!

First off, you need a supported Arduino with a matching motor interface. My expectation is to use my PC to control the DCC trains, so I wont need any extra throttle hardware. For any electronics projects, make sure you have a solid power supply. Especially with DCC, which requires intricate signals running over the model railway rails, you should follow the power supply guidelines here, preventing any further issues.

To make life easy, I purchased a legit Arduino Motor Shield from Core Electronics and attempted to plug it into my Arduino Mega 1280... used in most of the Arduino posts on this blog.

DSC03759

Turns out, my Mega is so old that the pins don't even line up! Seems that the pin layout changed at some point in the last 11 years.

DSC03760

Luckily I had a spare Uno on-hand from previous Remote Control tinkering.

DSC03769

With the newer Uno, things fit together nicely...

DSC03771

Note that there's still a mod required on the motor shield to make sure that you isolate the USB power from the track power.

DSC03766

Following the instructions here, I cut/scratched the thin trace between the VIN pads on the board. With the pads still there, I can solder a jumper wire on later if I want to restore the use of the Arduino's voltage input.

DSC03773

Once you've got your hardware setup, plug it into your PC and make sure the Arduino interface is all up-and-running, including the installation of the Arduino drivers. You can then go and download the latest version of CommandStationEX. Extract the zip and open the folder, you'll find the PDE is associated with the Arduino IDE and can just be double-clicked. Finally, just make sure your Arduino is configured correctly (type/port) in the IDE and upload the sketch.

DSC03776

Note that the software above is just the code for the Arduino. The Arduino acts as a bridge, with its own command set, so you'll then need a controlling application to get trains moving. I downloaded and extracted WebThrottle-EX, but you don't even have to do that! On the computer connected to the Arduino, just run it from the cloud!

dcc-webthrottle-ex

Firstly, hit Connect in the top-right. It'll ask you to choose a Serial Port, which USB2Serial should be listed. Mine was COM6 and it all connected straight away. From there, hit the Power Switch in the middle. Finally, you need to enter the vehicle ID in the top left and then hit the arrow to the right of it. Thanks to my record keeping, I knew the ID I'd set the Kirara to. With the number 12 in place, I toggled the headlights button and the headlights came on! The track was dirty and the vehicle wheels were too, so I flipped it over to clean and found...

DSC03777

Hah! I left a note to myself that I hadn't even seen this time-around.

I didn't need N Scale to work this time around, so I packed it all up in ready for a HO DERM install! Mission accomplished!

Filed under: Arduino, DCC 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
30Mar/210

Kangaroo Liner でGO!

2021's Timetable Revision is full of more surprises! First we had the innauguration of the new Fukuyama Rail Express from Ajikawaguchi to Morioka. Next up we have a new service known as the Kangaroo Liner, run by the Seino Group, from Nagoya to Fukuoka! The train is named after the companies' logo. Something quite similar to QANTAS, but backwards.

Above is the stock image that was sent out with all media online. I was very surprised to see a DF200 up-front... so-much-so that I thought there'd be a chance one would run the service! The media releases indicated that the train wouldn't be full of Kangaroo-only containers and that there'd be space available for other operators to hitch a ride.

Location Northbound Southbound (read upwards)
Service 5051
Nagoya Terminal 2212 1823
Inazawa 2229-2237 1721-1804
Gifu 2258-0007 1559-1655
Suita 0201-0204 1245-1250
Kobe 0238 1210
Himeji 0309 1135
Okayama 0423-0432 0911-0957
Hiroshima 0646-0649 0554-0601
Iwakuni 0734
Shinanyo 0850 0409
Hatabu 1028-1040 0219-0244
Kita-kyushu 1056-1106 0125-0202
Fukuoka Terminal 1247 0022
Service 5050

Westbound Service

The first train to leave was the westbound service from Nagoya to Fukuoka. At 2012 on March the 29th, the service departed and passed the Nagoya Station Camera not long after.

As you're watching the start of the video, you might be ready to tell me that it's "not the right train!"... but as the consist keeps rolling through the camera, you'll see that the Kangaroo-liveried containers are all piled on the rear. As mentioned above, there was always going to be spare room on the rake of flat wagons and the company was very happy to accommodate other operator's containers.

After travelling west, it then passed the Mukomachi Live Cam with quite a few more Kangaroo containers on-board!

From here, the Shin-Osaka cam picked it up, but it there was less-than-zero visibility. Unfortunately, there's no other cameras to the west to capture the action!

Eastbound Service

Due to this limited visibility out west, the first spot the train was seen was the Shin-Osaka Live Cam. The eastbound service seems to have at-least half a loading of Kanga-tainers.

After a stop-over at Suita, the train passed the Mukomachi Live Cam on time.

And then finally, back through the Nagoya Station Camera.

Looking forward to seeing these in real life... at some point... in the distant future.

Filed under: JPN No Comments
26Mar/212

Apple eMate 300 – Battery Refurb

Whilst fixing the hinges in my eMate 300, I noticed that there were also links to replacing the batteries. That link shows how to replace with proper cells, but it turns out that you could also use a battery holder.

DSC03021

I bought a full kit of bits to do the latter, but then realised that the installation required hacking out the existing cage for the battery. Not wanting to do this, I fell back to the soldering idea and wished I'd bought batteries with solder tabs instead of just standard AA-style cells.

Anatomy of a Battery Pack

The eMate 300 battery back has a socket with 5 pins/4 wires, a thermistor, 4 cells and a temperature switch at the far end. When replacing the cells, remember to keep everything but the actual cells themselves.

DSC02433

Peel the plastic off and then de-solder or cut all contacts. And keep the temperature switch!

DSC03050

Solder everything back together in the same order...

DSC03030 DSC03033 DSC03035

And then jam it back in the plastic case that it all came in...

DSC03082

If you're in luck...

DSC03094

You'll have a charging battery!

Testing it...

There doesn't seem to be an SSH client for the Newton (although people have tried), so I thought I'd go for Telnet. It seems easy to do over a serial cable, but I want to do it over Wifi! Thankfully there's the PT100v1.1 Client available over at United Network of Newton Archives.

DSC03099

Installing this got me a prompt... but a swift disconnection when trying to log in. But, the battery is still showing full charge after minimal use over two days! Win.

Filed under: Apple 2 Comments
24Mar/210

Fukuyama Rail Express でGO!

The Fukuyama Rail Express is an express rail-freight service run by Fukuyama Transporting Co, Ltd. Regarding rail-freight, they previously only operated a service from East-Fukuyama to Tokyo.

Here's a shot of that service from my travels in 2019, running past Shin-Osaka Station behind an EF66.

DSC08353

As of yesterday, a new service has been innaugurated from Ajikawaguchi (Osaka) to Morioka!

DSC08353

How bad is my photoshop? Note that the services only run on weekdays.

Location Northbound Southbound (read upwards)
Service 58
Ajikawaguchi 2208 1600
Suita 2227-2231 1516-1528
Gifu 0023 1257
Inazawa 0038-0040 1229-1234
Kasadera 1206
Nishi-Hamamatsu 0200 1025
Shizuoka 0259-0301 0902-0910
Yoshiwara 0826
Numazu 0337 0747-0749
Sagami 0421 0656
Yokohama 0449 0629
Shin-Tsurumi 0505 (arrive) 0615 (depart)
Loco swap and service change to 61 Loco swap and service change to 59
Shin-Tsurumi 0541 (depart) 0541 (arrive)
Kajigaya 0551 0532
Niiza 0625 0502
Omiya 0642 0449
Utsunomiya 0745 0351
Kuroiso 0838-0842 0259-0303
Koriyama Terminal 0931-0954 0007-0158
Iwanuma 2234
Sendai 1147-1207 2141-2215
Higashi-Sendai 1217 2134
Kogota 2051
Morioka 1433 1908
Service 60

Thanks to Japan's love of live-cameras, I was able to follow the service in both directions. Actually, as I start to write this post, both trains are still running both north and south. Anyway, let's rewind and check out what happened.

Light Engine to Ajikawaguchi

The northbound service started at Ajikawaguchi, just next to Universal Studios Japan in Osaka. To get the rake of beautifully-shiny containers out of the port, an engine was needed. EF210-156 was sourced from Suita and sent to Ajikawaguchi at around 1930 on the 23rd of March, 2021. Here it is passing the Shin-Osaka Live Cam.

It then passed the webcam near Fukushima Station.

Ajikawaguchi to Morioka

With the loco in place, the next step was to run the service! The consist ended up passing the Fukushima Camera around ~4 minutes behind schedule thanks to a late-running Haruka Airport Express.

Back to the Shin-Osaka Live Cam, it was nearly impossible to see it pass... but the audio is awesome in the night air!

Next up, it passed the Mukomachi Live Cam, amongst all the other freights and services.

A while later, it passed through Nagoya Station. Note the Shinkansen track vehicles working away also. That's a huge Tamper!

There's a great cam between Fuji and Shizuoka (which I've discussed before, recording times) and the train was seen passing through.

As that the train took the Niiza route through Tokyo, we couldn't see it on the Akabane or Shinjuku Cameras. Therefore the next and final camera was the Omiya Camera. The EH500 would've been swapped on at Shin-Tsurumi.

And that was it for the northbound. Congratulations Fukuyama Transport! Fortunately, we still had the southbound to stalk.

Morioka to Ajikawaguchi

The southbound left Morioka on the same night at 1908. It therefore passed the Omiya Camera before the northbound at around ~0450.

Whilst waiting for it at the Fuji cam, the northbound original Fukuyama Rail Express from East-Fukuyama passed by!

A little while later, the southbound was seen passing.

Next up was Nagoya Station.

And another guest came through an hour later...

And then again at Mukomachi Live Cam, right up the back, top-right, look really close!...

And since we're still waiting for the Fukuyama Rail Express to get to Mukomachi, here's Doctor Yellow passing Torikai to Shin-Osaka.

Whilst 'waiting at Mukomachi Live Cam', an EF65 passed towing a DD200!

And then, the main event at Mukomachi Live Cam.

Back through the Shin-Osaka Live Cam.

Through the Southern-Side Shin-Osaka Cam, one minute earlier if you believe system clocks... Also, this camera was down the previous evening when the inaugural service ran...

And then the final shot of the day! Past the Osaka Loop Line at Fukushima.

And that's a wrap!

Filed under: JPN No Comments
22Mar/215

Power Mac 6100/66 DOS Compatible – MIDI Out

After building the 'hydra cable' for this DOS Compatible machine, I quickly found out that the Joystick port could not be used for MIDI input/output. There were numerous hints online, and they all resulted to the fact that we'd need to solder a pin on the Vibra16 IC to get midi to the port. Here's the module removed from the DOS card. The CT2501 IC nearly takes up the entire board.

DSC02950 DSC02956 DSC02958

I was able to re-wire all of the below as I created my own hydra cable. I wouldn't suggest trying to modify an off-the-shelf cable as they're a sealed unit and have many pins incorrectly wired at the joystick-port-end.

Determining the correct pin

I'd asked online for help from someone who'd already worked out the solution, but hadn't received a quick answer. After rummaging through my junk boxes, I realised I didn't have a card with the correct CT2501 chipset, so I asked a few friends also. No one had the exact model required, so I considered purchasing one on eBay. They were averaging about one-hundred-dwollar shipped, so I decided to try and find high resolution photos online instead.

It turns out that dosdays has a fantastic library of information on the SB16. Included are high-enough-res photos of the rear of the board that allowed me to easily trace pin 12 (MIDI OUT) back to the CT2501 IC. Pin 15 (MIDI IN) wasn't so easy as it disappears under the 74-series IC in the bottom left of the top-side of the board. Fortunately, my main goal was to just get DOOM II throwing MIDI out to my SC-88.

sb16-bottom sb16-top ct2500-close-up

After sitting in Paint.NET for a while, tracing traces, I came to the conclusion that MIDI OUT was Pin 30 of CT2501. In the pictures above, I've traced this in RED on the underside-shot of the board and YELLOW on the zoomed in CPU picture. MIDI IN is traced in BLUE on the underside-shot, but then disappears on the top half under the IC. Images from the web don't provide enough detail to allow me to continue the search! I was happy with just MIDI OUT, so I then started the quick hack-job to solder on a test wire...

ct2501-close-up ct2501-close-up-2 ct2501-close-up-soldered

In no time at all, DOOM II was outputting its soundtrack into my headphones.

DSC02980

Usually I'd pipe the audio-out from the SC-88 back into the soundcard of the computer that it was connected to, but that's not an option here with the Power Mac 6100 as it only has Microphone In! Oh wait, can I also wire-up Line-In for the DOS Card? I don't think that'd be as straight-forward as I'm sure there'd be a DAC and other components on the path.

External Connections

The port at the back only needed to be one wire, so I initially used an RCA socket.

DSC02986 DSC02992 DSC02999

I then realised I had no spare RCA plugs on-hand, so I switched the socket to a 3.5mm mono audio jack. This looked nicer anyway.

DSC03017

From here, a headphone cable was wired through with one of the channels running to pin 12 on the joystick port. This was then plugged into the SC-88 and DOOM II WAS PLAYED AT FULL VOLUME!

Filed under: Apple 5 Comments
18Mar/212

Power Mac 6100/66 DOS Compatible – MIDI

I couldn't resist this over-sized-pizza-box when I saw it on Facebook Marketplace. I never really check that area of the web, as the interaction mechanism is too loose... half the time you never even get a response from sellers and it doesn't feel real-time enough to trust if anything is actually available. Anyway, I threw a curve-ball offer and the seller responded (6 hours later)! The unit was picked up in short time, well actually... I had to wait for Victoria's 5-day lockdown to end. Yes, that was a while ago! It's been sitting in the junk room waiting for a video adapter cable thanks to it's HDI-45 video plug.

DSC02866

It's a beautiful unit. A much larger pizza-box than the LCs and it's even DOS Compatible!

Period-Correct Screen

By the time the video adapter cable came from America, I was ready to test the unit. I'd actually recently picked up a Trinitron monitor from the tip shop and it also needed testing! After a good sanitisation all round, everything was plugged together. To connect the Mac to the Monitor, I needed the HDI-45 to DB-15 adapter and then another DB-15 to DE-15 to get to VGA standards. With everything connected I got nothing... just a black screen... but I did get a startup bong! Myoldmac has a great reference on the video adapter settings and I had to use this as my adapter seems to have lost its packaging and the settings sticker on the actual unit. After a miriad of tests, the correct answer was to have 'separate sync' configured.

1614851778804

Ok, with a picture showing, I could now configure resolutions... only up to 832x624? What gives? Oh, This machine has 640kb of non-upgradeable VRAM limiting my choices. There's a good write-up here describing its system limitations. Turns out the AV Model has a separate card with 2MB allowing more resolutions on an external monitor. That wont work for me though... I have a DOS card in there!

MIDI By Roland

Before we get to DOS, let's just get my external SC-88 going. It's got a serial connection and I've always wanted to test it. Firstly, grab a game that'll support it and get that installed. Actually, there're too many options to choose from there. For fun, I'll load up DOOM II as, well, it has the easiest gameplay and a great soundtrack!

Picture-1

Grab a standard serial cable, make sure you choose a port that's free (i.e. not in-use by AppleTalk as you won't get a single message and it'll just not-work) and plug it all together. Make sure the SC-88 is set to "Mac" and that it has been power cycled since that switch was changed. Then power up the Macintosh. Don't expect anything to be hot-pluggable! But even then, nothing would be visible in the Quicktime Settings.

At this point in time, you can look over here for hints and then here for cable wiring and then here for the Roland manual and keep guessing why that Quicktime panel doesn't work... but don't bother.

No amount of cable-foolery got the basic Quicktime Installation to enable the General Midi checken-boxen. Instead, I software-foolery'd around until a version of OMS both extracted and installed. Note, if you've just installed MacOS, do not use the version of StuffIt from the Internet Utilities folder. It's archaic and will fail to extract things. Make sure you get a recent version installed first!

Picture-8

Picture-13 Picture-11 Picture-14

I need to discuss the middle shot above. It's telling you that, if AppleTalk is enabled, one of your Serial ports might be in use and the CPU will also be under pressure. Fortunately, our AppleTalk config is over Ethernet, so no Serial ports are in use! Is this software version for Macs with zero Ethernet capabilities? Eek... Anyway... auto-detect away!

Picture-15 Picture-16 Picture-17

Picture-18

Haha.. it found 16 Roland SC-88s... If I was a rich man? Must download some Beatles. After this, many duplicates were cleaned up until there was only one. From there, I scrolled down to check the other port...

Picture-19

The Yamaha MU80 didn't fair as well... it itself threw an ILLEGAL COMMAND error and the software decided it was a shitty Modem.

DSC02935

So.. just force it in the settings...

Picture-21

And then try again...

DSC02938

Music! Doom II sounded amazing.

DOS Compatible

PC Setup was already installed on the hideously-themed OS. I tried to boot it up, but the screen just went black! Turns out that unlike the previous Power Mac 7220, this one needed an external cable to route the video through. Googlin' around, there were a few options/schematics, but unfortunately this specific Power Mac had the HDI-45 Video port and therefore needed a hydra cable containing a different pinout. Thanks to the internet though, someone has already done the build and the pinout was available (and more over here). Here it is again for safe-keeping:

Connector on DOS card 26-pin Male on cable Video out on 6100 15-pin Male on cable Video to monitor 15-pin Female on cable Joystick connector 15-pin Female on cable
1 2 (Button 1)
2 3 (J1 - X)
3 6 (J1 - Y)
4 9 (Blue) 9 (Blue)
5 5 (Green) 5 (Green)
6 3 (CSYNC)
7 14 (HSYNCGND)
8 15 (HSYNC)
9 4 (SENSE0) 4 (SENSE0)
10 1,8,9,15 (+5V DC)
11 11 (J2 - X)
12 13 (J2 - Y)
13 7 (Button 2)
14 1,6,11,13 (grounds) 1,6,11,13,14 (grounds) 4,5,12 (grounds)
15 1,6,11,13,14 (grounds) 4,5,12 (grounds)
16 15 (HSYNC)
17 12 (VSYNC)
18 7 (SENSE1) 7 (SENSE1)
19 10 (Button 4)
20 1,6,11,13 (grounds) 1,6,11,13,14 (grounds) 4,5,12 (grounds)
21 14 (Button 3)
22 2 (Red) 2 (Red)
23 1,6,11,13 (grounds) 1,6,11,13,14 (grounds) 4,5,12 (grounds)
24 12 (VSYNC)
25 3 (CSYNC)
26 10 (SENSE2) 10 (SENSE2)

Each of the three plugs coming off the main plug need 13 wires each! I don't think I've ever had a standard 'round' cable in my arsenal that had more than 8 wires. Maybe I should trash a printer cable? Maybe I'll just heat-strink single-strands? If I cut the heat-strink up enough, it can 'telescope' down when I'm soldering and then I can slide the pieces up, bit-by-bit? Looking a bit like bamboo? It won't be too flexible though!

DSC02822

I started chopping up wires to use for the individual pins... until it occurred to me that pins were shared across all three secondary plugs. How does one share a wire succesfully? I'd actually need to construct 1-to-2/3 wires that split out into the differing plugs. At the final plug end, they can bridge all the pins they need to, but they need to get there first, without causing wire bridges 'outside' the initial plug housing.

DSC02834

So, with this in mind, I twisted two or three wires together where the ground feed needed to be distributed. I even used resistor legs to shift the major solder blob away from the plug solder pins.

DSC02836 DSC02839 DSC02842

Somewhere around the middle photo above I went slightly insane... and slept. Soldering and routing that many wires was a nightmare!

DSC02859

IT WAS EVEN WORSE ONCE A SINGLE END PLUG WAS ON!

DSC02862

But finally, a hydra-sorta-styled cable was assembled. All wiring was double-checked and then it was plugged together:

DSC02888 DSC02892 DSC02899

No way. It worked. I re-loaded the DOS image hard disk file from the original installation of Mac OS and found a copy of Win95B with an app that seemed to be a collection of "The Age" articles. Who-the-fxxx would want to have a source of that trash?

DSC02901 DSC02903 DSC02906

Unfortunately, it seems that all the data was on CD! So I shut it down.

DSC02907

Shiiiit.. haven't seen that in a LOOOOOONG while. I then tried to shut down the actual Macintosh... after Apple-Return switching back to MacOS...

DSC02915

What dat? Does this thing have an actual physical clicky power switch? i.e. non-atx-style soft power off? I pushed it and it did indeed click! I never noticed when turning it on!

MIDI via the DOS Joystick Port?

I was really hoping to hook up my Roland SC-88 to the joystick port, but no go. A quick google of pinouts shows that MIDI TX/RX signals are on pins 12 and 15 and these are tied to +5V and GND, which means it's actually REALLY DANGEROUS to hook up any MIDI device to this joystick-only port. Actually, I blab a lot on here, so let's just re-make that point...

Power Mac 6100/66 DOS Compatible Card Warning

DO NOT plug ANY form of MIDI equipment into the Joystick Port of a Power Mac 6100/66 DOS Compatible Card.

Looking at the cable pinout table further above, it shows that we also don't have any spare pins on the 26-pin plug from the DOS card to squeeze MIDI through, so no wonder they prioritised video over the game port. Interestingly though, couldn't they have possibly spared two of those ground wires to pass MIDI data through?

It then occurred to me that we might be able to route the MIDI data through the Macintosh' Serial Port. To do this, I first connected my SC-88 (which has a very convenient Macintosh Serial Port on it!) to the Printer port and configured PC Setup to route COM1 to this.

From here, I downloaded and installed softmpu. This driver loads into RAM and intercepts all calls to the IO of the MPU on the Sound Card. The DOS Card fully supports the MPU, it's just that the output pins are literally un-wired! So, with the virtual tap, we can send the MIDI data out to COM1 instead, which is then virtually connected to the Macintosh Printer Port which is then hard-wired to the SC-88!

But it didn't work... softmpu just froze up the DOS side whenever executed.

Can we wire up the MIDI Port?

I then did a bit of Googlin' about those missing traces from the CT2501 Vibra 16 chipset. It seems that many have discussed it before, but each time it's ended in silence. Macintosh Garden's Comment Thread even tells me that it would've never worked and half of me wished I'd read that at the start as I probably would've not even bothered to wire up the port!

In 2019, BaldGoldEagle brought up the exact topic again on Vogons and got a good amount of detail, even after a direct bit of abuse from someone who didn't quite listen at the start (yeah, I'm talkin'bout you derSammler). The basic answer was to find a PC soundcard that has the same chipset (CT2260, CT2810, PB3110, CT3110, CT3930) and trace the pins to the port to work out what we'd need to build. The thread ended with a user offering to do so, but then the usual silence... I've just replied to see if anything came about!

A little more googlin' brought up a beautiful post dishing out on all of the DOS cards as they were built. Initially, the Houdini cards were mentioned as supporting MIDI! That was quickly corrected in the replies and the same result was reached: crickets.

I'll post again about MIDI once I've worked on it all a little more. (This now works! More information here!)

Filed under: Apple 2 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
4Mar/210

Apple iBook G3 – Keyboard Refurbishment

This thing was found at a flea market in very poor condition. The CD tray was hanging out and wouldn't latch back in, every open orifice was caked with dirt and there were zero accessories. Fortunately, the iBook G4 I'd previously revived had the same power supply, so I knew how to build one.

DSC02446

After a very superficial clean, I soldered the required 2.5mm jack onto spare wire and applied power. It chimed and presented a dude-where's-my-hard-disk screen... not surprised at all as there was absolutely no sound made from the HDD corner. Fortunately, these are standard-issue replaceable parts, right? Just a few screws?

A Full Tear-Down

I started pulling the unit apart and felt like I'd fallen down a rabbit hole! Keyboard out, top shell off, bottom shell off ... but still no HDD... it was under metal shielding... what is this? An Amiga 1200?

DSC02462 DSC02465 DSC02467

DSC02473

I thought I'd check iFixit to see if there were any tutorials and found that I've made it up to around step 33 and that there were 11 more steps to go! WTF... why so hard? The HDD showed no signs of life when the machine powered up, so I needed to continue. I'm sure I could work out where all those screws went later.

DSC02476

Finally, the HDD was out. It's a stock-standard 2.5" Laptop IDE HDD and I had a junk box full to replace in. Unfortunately, the first 10! that I tried also showed no signs of life. I then tried a Seagate (these scare me the most with regards to reliability) and it booted... it was also 20gb larger than the 40gb prior HDD, so... let's do it.

Which OS?

Finding an OS that would boot/install was the next challenge. These units supposedly came with both OS 9.2.2 and OSX 10.2.1 installed? I'll stick with just OS9, but there seems to be a large selection of installation media available. There's an iBook G3 restore CD there, but I just kept getting the following crash... and it didn't seem to have the correct display drivers.

DSC02513

So, I opted for the OS 9.2.2 Universal ISO over here. You'll need to sign up, but it's worth it for access to their amazing library of old OS installation media!

DSC02495

DSC02554 DSC02557 DSC02564

DSC02563

Very nice, we're up in full-colour and functionality! Note the open-cdrom-surgery... it works perfectly fine when taped down to the table to keep the tray shut! Nice to see it spin/seek when loading.

Pink Screen Artefacts

Screen still had hints of pink... some said backlight, but has to be black channel missing on ribbon cable?

DSC02491

Popping the screen open isn't so hard... four screws and then a little encouragement around the edges. Looks clean enough inside.

DSC02532

Let's just tinker with that LCD ribbon cable anyway...

DSC02542

Haha... a little force, pushing the plug back into the socket, totally fixed the display issues!

Cleaning the Keyboard

This is a serious undertaking. The membrane has LEDs like the one I ripped off the PowerBook DUO 230, but instead of just popping keys off, you need to unhook them with a lot more care!

DSC02570

DSC02579

Underneath each key is a scissor-lift style mechanism that's clipped at both ends under the key face. One end is easier to un-clip and just needs a bit of force between the back of the key and the arm of the mechanism to pop it out. Once done, the other end un-hooks.

DSC02595 DSC02603 DSC02611

DSC02613

With all keys off, the devastation was real. This poor keyboard needed a lot of love.

DSC02632

The top keyboard membrane is non-electronic and just holds the rubber buttons in place.

DSC02637

The second is multi-layer and does the actual key contact. It also has the ribbon cable that runs down to the motherboard.

DSC02639

Finally, there's a metal plate underneath which is actually two metal plates combined.

DSC02634

DSC02641

Don't bother trying to peel off the rear instructional sticker as it wont help you remove the metal shielding.

DSC02644

If there's dirt then just grab a brush and some detergent and give it a good once-over. I had initially thought that the sticker underneath had provided a sticky surface for gunk to adhere to, but it turns out that something must have been spilled on the board. The gunk was just sitting on the metal shield that was exposed through the holes in the main metal plate.

DSC02665

A lot of isopropyl alcohol and que-tips (ear buds!) were used to clean up the membrane layers. I didn't want the chance of any moisture getting into the plastic. Also, as per the previous PowerBook, watch out for the LEDs! You'll rip them off if you apply too much pressure.

DSC02671 DSC02674 DSC02708

In the end, make sure that everything has a good chance to dry. Use a USB Keyboard if you need to type in passwords or play Sim City 2000.

DSC02713 DSC02716 DSC02719

DSC02724

Putting it back together was a pretty straight forward process. In total, cleaning that keyboard took a good 4 hours all-up and ... budget for it. Don't rush as those key mechanisms won't suffer too much torture.

DSC02730

I was really surprised that I didn't make a mistake that would've trashed the whole keyboard! Meanwhile, the lighting is terrible in ALL of these shots, now that I look back over them. The keyboard really did end up cleaner!

Internal Optical Drive

So, this laptop was picked off the ground at the flea market and the optical drive was just hanging out the side. I straight away tried to push it back in, but there was no latch and it sprung out again. Being an apple, there's no eject button and, as per all laptop CD drives, it's spring-loaded so that it pops out enough, but not too far, to allow disc extraction/insertion.

Whilst the keyboard was drying above, I pulled apart the CD drive to see what was going on.

DSC02480

Immediately obvious was the jagged edge on the plastic strip where the locking mechanism is meant to be caught. The actual actuator that locks/unlocks the drive is the in the tray itself and it is meant to latch onto a notch on the side rail inside the drive housing. With no notch available, the drive wont latch shut and therefore wont spin up. I successfully used tape to keep it shut and install software, but that was never going to last long.

DSC02675

For fun, I grabbed my oldest external USB CD drive and popped it all-the-way open to see what the notch might look like. I had no idea if this drive would have matching internals, but I tried anyway. Little would I realise that the drive was a 99% match with the actual unit in the Mac! The data plug fit, the screws even lined up!

DSC02685

The only thing that didn't match was the external bezel... and no amount of mushing would get the Apple bezel to fit. Instead, I trimmed off an edge on the PC drive and installed it in the iBook. Worked like a charm! From here, I'll try and measure-up a plastic piece to print and install into the original optical drive.

Filed under: Apple No Comments