Doing things on SBCs

I recently bought a LinkSprite pcDuino (via Jaycar in Australia) -- dual-core ARMv7hf, no-board Wifi, Gigabit ethernet, and a SATA port.

It was AU$120 I think-- but it shits over an RPi, especially when you bung an SSD on it (sustained network stats of 37MB/s down, 20MB/s up). Noice.

So, it's a GNU-slash-Linux SBC with... Arduino headers.
...and because of that, everyone demands there be a drool-proof Arduino environment for it. Fuck that Noise-- one of my first things to try was controlling an 'Arduino' LCD board with bit-bashing the Unix way. The zero dependency order-of-magnitude easier to understand code:

Other urls found in this thread:

It's time to get an enclosure.

This looks pretty badass, OP, the combination of SATA+GigE is especially appealing. Skimming over the handbook, it also looks like you can flash an OS directly on to the NAND storage, which is nice since the RPi demands that you boot from SD card. Have you replaced the default Ubuntu with something else? A full DE always seemed like overkill on an SBC for me.

Also, holy shit @ your bandwidth, you must be on the NBN?

Cool blog post m8

In general SBC are rather useless if you buy them without a clear purpose. Projects like emulation station or dedicated media player are pretty neat.

woa bro, its like I'm back in 2007 us oldfags airight

And dare I say it, the Arduino headers have came in very useful... Jaycar also see a 'cheap' (for a brick&mortar) ESP8266 shield, and that drops straight on, and after configuring the GPIO/UART port, gets me a plug-and-play ESP development setup! Flashing any firmware direct from the pcDuino with worked first-go. At the moment I'm poking at PunyForth, and that could make the ESP replace the RPi+Arduino in a tank robot I've got.

Yep. There's a microSD slot as well, which takes booting priority in case you brick the NAND (..which I've done a few times).

It's running Debian off the SSD at the moment. The hardware is a superset of what the Cubieboard has, and I've tried booting NetBSD on it as well-- although it's AHCI code is buggy and won't detect HDDs. :/

Alas, that's just across the LAN. Gigabit Ethernet means "LAN party file server" to me (...pity it's just a single SATA port).

Dude, you really are from 2007.

Whatever happened to snacks, though? Didn't he used to have a podcast or some shit?

Died of AIDS.


Anyways, I got an OrangePi One earlier this year. I don't really "do things" on it, I just set it up and left it hanging from the ethernet cable. It runs a Tor relay and stuff.

Education is a serious purpose.

But that's other people's code for shit I don't care about.

I think he's running a little imageboard now. I forget what it's called, but it's got user-created boards and it runs off of a proprietary engine of Snacks' own design.

Jaycar have just started selling cheap TFT shields (at like 25% the price of the rest of Arduino Cottage Industry) .. They're slightly non-standard pinout of the other ST7735-controlled boards out there.

Wasted two fucking hours trying to figure out how to get SJWfruit's fucking C++ code working for testing and have something to compare my own code against.

So a bought a BBB awhile back hoping to use as a media center (kodi, watching movies loaded from the SD card, etc..). What I didn't know is that BBB sucks balls at this.

What semi-freedom respecting board would you recommend I use in it's place? I'm leaning towards allwinner lime A20

I'm planning to make a SBC play old vidya. The idea being that it sends button presses to the console through it's controller. I already know that I can hook up transistors around the button pads to "press" buttons with GPIO signals.
Only thing I'm stumped on is the scripting. The idea is that the user gives a text file with instructions on every line, and a parser reads a line every frame and outputs that to the console. The only problem is that it has to do each line of code with a delay 16.6ms between them. What's the easiest way to make a program that does something every 16.6 milliseconds, with as little variation as possible?

The Lime2 A20 should do just fine, although I haven't tested mine with it. The Odroid C1+/C2/XU4 will work fine for that but they rely on older Linux kernels And the XU4 is loud as fuck. Keep your BBB at least, because they're great for projects.

What do people do with these SBCs? I always thought it might be fun to do demoscene coding for these. They are so cheap that the entire community can upgrade to the latest version of whatever SBC they are using.

Why not just use old cellphones? You can get those often for free and they're a million times better (and often smaller) than the 'SBC' market.
The SBC market is a scam.
No one said you had to use Android.

Just as an example, you can get HTC Droid Incredibles for $15-$20 on eBay. Those come with:
Price out something comparable in the SBC arena and all the addons will put you in the $$$ range with a massive blob that resembles an EE version of the gentoo car and has impossibly shit performance.
You guys are being scammed hard.

Is it easy to get datasheets for old cellphones? What makes SBC different is that datasheets are normally available. SBC would not exist if people could not get the datasheets that allowed them to use it.

That's okay for some things, but how hackable is that phone really? Can it run any full Linux distro? Can you get it hooked up to a couple SSDs? What other kind of connections can you swap into it? etc.

Loved that phone, got it for 200 bucks totally stolen, VZW blacklisted back in 2010 and put it on Cricket, back when they were a CDMA carrier.

I'd like to see more progress on turning these things into proper SBCs. Android has way too much overhead for this sort of thing. Shouldn't be too hard to get USB devices attached using a host cable, SSDs, not as much, but most older phones have MicroSD slots. Proper ethernet would do wonders.

Was looking at the Odroid C2, but I think it's still stuck on an older kernel. Is there anything else that offers similar price/performance? Specifically I'm considering running
I know drivers tend to be a problem for boards that aren't SJWpi, but is that mostly for video output? I plan to run this headless for the most part. (I might run emulators on it, but I also have a softmodded Wii so it's not a big deal if I can't.)

An old phone might work for some things, but it won't work for others. Phones are more limited in hardware features because they're meant to be portable and weren't designed to be used as a small computer that can sit near your router 24/7. You'd also have to pick and choose if the phones you're looking at don't support all of the features you might want (OTG USB, SD, microHDMI output, etc.) at a reasonable price.

Everything shits on RPi.

On the XU4 you can also run a up-to-date kernel, 4.8.6 or 4.9 or something. The problem with that though is that you don't have video acceleration (which is the entire reason why the older kernel is default.)

There probably is a new kernel for the C2 too, but I don't have one so I don't know where to get it. I assume if you run it headlesss you won't care about video acceleration anyways. It's also noteworthy that the kernel is old (3.14 LTS) but still gets updates every week. So bugs are fixed and security holes are closed. dirty cow fix was released within 24h iirc. You only miss out on new kernel features and drivers that go with them (like for external usb devices.)

To add to this, if you get an XU4 replace the active cooler with the blue passive one. The default cooler with the tiny fan is very loud when it spins up, and the blue passive cooler does a fine enough job.
Hardkernel is the best company to go to for a powerful SBC that doesn't break the bank. The closest alternative I can think of would be Cubietech's Cubietruck, but that isn't very good for game servers from my experience. Also they went full retard with the Cubieboard 4 and 5

Just don't get a RasPi if you want a file server. All 4 USB ports and the ethernet jack connect to one USB2 port internally.

I learned that the hard way. I have a Model B from a while back I bought into the hype and have regretted it since that I've maybe peaked at 2.6 - 3.1MB/s, but it usually averages around 1.8 - 2.1MB/s. I don't know why the fuck newer SJWpi prodcuts are still awful with network speeds and still get shilled for general usage.
It might be fine for an i2p router since I have it and i2p wouldn't use the full bandwidth anyway, but it's awful for just about everything.

I'm tired of getting jewed. Is there a way to set up an SBC as a phone? I know there are loonux GPL chat clients, but how would I get cellular and also connect with my friends and family?

Yes, make sure you have a spare USB port to add a cell/3G device and then use ur favorite voip program.

Ah fuck. I went to clean a 2.8" TFT LCD shield with spraycan isopropyl ...and fucked it up. Seems to be an insoluble substance in the spray has got between the touchscreen and the LCD, and it's not in any hurry to dissipate.

The LCD's Ghost is haunting me.

Looks clean to me.

Maybe it's Candlej

Candlejack hasn't been a meme since at leas

\o/ .. the isopropyl has cleared out.

Playing around with the ILI9341 LCD a bit more, it's a 18-bit/16-bit colour display.. and that's about it-- unlike some other controllers, it doesn't have 8-bit/indexed-colour modes or the like ...making it a slow display to update, limited to a max-60MHz bus-- so no full-screen video. This test is basically plot-unplot of 100 dots.

The sd card of my Raspberry pi zero has died, it doesn't accept any write anymore.
That's after maybe 5 OS install attempts and less than 24h of running on it total. Maybe it's my mistake to install on a journaled FS, but still that's pretty shit (for samsung flash especially I guess).

I have several awful experiences of failing flash memory and I would not never trust anything of importance to it.

Next step I guess I'll install Alpine in read-only filesystem with the RAM overlay, hopefully this setup will last.

There's only about 32kB Flash ROM in an Arduino, which is nowhere near for what a full-colour image needs. The LCD board includes a microsd slot, but I decided to instead download images through /dev/ACM0.. and hack up a way to do it efficiently when there's only 2kB of RAM (..that rules out GIF

A surprisingly simple Python script decodes an image, generates a run-length-encoded stream of hexadecimal values (with a few byte-saving tricks) and writes it over.

That is really neat. Here is something I wrote based on Peter Shirley's Ray Tracing books. They are very cheap and all meat, no fat.


Neat. (Where's the teapot..)

Actually the first idea I wanted to try for the LCD was my old boing code for the STM32F4DISCO: ...this actually generates the whole 320x240 frame in realtime. Unfortunately the stm32 is a 180MHz part, and the Arduino Uno is 16 MHz-- it takes a second just to clear the display, and there's no display acceleration features other than hardware scrolling

Then idea #2 was to port ...which is a simple sphere-raytracer ...but even on a 4GHz machine it took 4 minutes for a 640x360 scene. :/


If you want some more inspiration for neat demo effects, check out Shadertoy.


Besides being on a slow 8-bit bus, it has a rather dumb LCD controller, where the only real things it gives you is (1) configure the screen (2) write pixels (3) read pixels (4) hardware scrolling... I played with it, though.