The latest posts in full-text for feed readers.
The PlayJam GameStick community server software got another feature: Purchases. You are now able to buy games (instead of having all of them available for free) and in-game products like levels and powerups.
Your wallet has an infinite amount of money, so you don't risk going broke :)
All games - even already installed ones - have to be bought now. After buying, the game download starts automatically.
The purchase dialog is a web view, displaying a HTML page delivered by the server. I had no idea how it looked like - there were no screenshots to find with my Google-Fu. In the end I found a video of Lee Chapman demoing the Gamestick, and near the end he buys Riptide.
I took screenshots, resized and warped them until they had the correct aspect ratio and size. Then I re-built the layout in HTML and CSS that a 2013 browser understands.
There was no documentation about the purchase requests and responses. The requests were easy to document since I could see them in the server logs, but the responses were hard: Some of them are handled in the Java library, while others are passed to the Marmalade UI and parsed there. The important things like "success, download now" were of course in the compiled C code, and I was forced to use Ghidra to make a bit sense of it.
The magic words are:
{
"body": {
"success": true,
"message": null,
"action": "CLOSEPAYMENT"
}
}
Implementing purchases fixed a long-standing bug: The "uninstalled apps" view in the settings crashed, probably the Marmalade interface was never meant to handle 188 games. Now only the purchased games are listed there - without crashing.
A number of games have in-game products: "Top Gear: Stunt School" allows to buy nuts, dollars and permits. In "Pacman Tournaments" you can buy tokens (3500 for 99.99USD!), "Rise of Glory" lets you spend money on airplane packs and in Prince of Persia you can buy coins (1000 for 1.99, 100000 for 99.99$).
Of course we did not have backups and I had to decompile the game apk files to find the product IDs that they used. Products had to be registered at the server, and the game only asks the server which products are available.
More often than not, decompiling did not work because the game was made with Unity or some other engine, and I miss the tools to unpack those files. In this cases I let the server return all products ids from 1 to 1000, with prices from 0.01€ to 10.00€, and could immediately see which products were used. This did of course only work on some games; others crashed when they received more than 15 products.
OUYA games were much easier in this regard: They send all supported product keys to the server, making it a breeze to quickly add products for unsupported games. Although, easier only after I broke their DRM :)
At one point I was finished and had only find products for the last game, Repulze. Then I saw that - instead of sending integer number product IDs, just as all other games do - this game sends string keys like com.pixelbite.repulze.iap.toolkit_pack1! I had to modify the database, parts of the purchase API and the game data schema to support that :(
But now this feature is really complete, and you can purchase things in the following games:
In 2024-09 we had 163 of 188 games archived. Thanks to GameStick fans Kazdan, Krzysiu, Ryo and TheMartinMess22 we have 170 now, a whopping 90.4%!
Newly rescued games:
Published on 2025-06-25 in gamestick
I've been using my Purism Librem 13v3 laptop daily for nearly 8 years, and now the left screen hinge mounts broke on the screen side.
I noticed it when closing the lid gave away cracking sounds. The closed screen is not aligned with the bottom case anymore; I can see a bit of the body.
Other people
had the same problem
with what Purism once advertised as super sturdy hinge
:
Designed to last, reinforced metal, mounted directly to the case and screen
We get excited about hinges. Often overlooked by inadequate laptop makers, our hinge is built to be sturdy for life, staying shut when shut, and staying put in any of the 130° of screen angle while in use.
The screen hinge was never the best compared to experiences with e.g. a Macbook Air - tipping the screen a bit, or having some bumps while riding the train would wobble the screen back and forth a bit.
I contacted Purism support and they asked me to verify that the motherboard mounts are still ok - it's a common problem that when the screen's hinge mounts broke off, the motherboard ones follow suit:
It looks like you need a new display, however, if the screw mounts are cracked, then it will break on the keyboard side as soon as the new display is installed.
Please inspect the screw mounts for damage. If they are cracked, please prepare some epoxy glue and ensure that the screw mounts are properly aligned. Once they are aligned, please apply the glue in a couple of thin layers, letting it dry for a day or two between applications.
Support also gave me a price: USD $366.89 ($299.00 Librem 13 v3 screen, $67.89 shipping to, Germany).
My internal limit I set before contacting support was 100$, maybe plus a bit shipping, but over 300 is too much. I'll buy a new laptop, this time from a different manufacturer.
I had a number of problems with this laptop. Some of them still occur today, which is part of why I won't repair it or buy a new one from Purism:
Bottom case screws fell off before I ever tried to open it.
When waking from sleep, the laptop CPU fan sometimes blasted to full speed, while the CPU itself was awful slow.
Could be fixed by sleeping and waking again.
Wifi driver stop working every now and then, spamming dmesg full of messages:
ath: phy0: Failed to wakeup in 500us ath: phy0: RX failed to go idle in 10 ms RXSM=0xffffffff ath: phy0: DMA failed to stop in 10 ms AR_CR=0xffffffff AR_DIAG_SW=0xffffffff DMADBG_7=0xffffffff
I had to reboot when I noticed this problem, which often was on the train to/from work.
Left Ctrl, Shift, S and up/down arrow keys have their black paint removed probably because of fingernails and heavy use.
Rubber foot fell off
Internal microphone is awful
The screen gets more and more grey smudges below the top screen layer, which can't be wiped off. It's like dead pixels, but in grey instead of black.
And now the broken hinge
What I still like are the hardware switches for webcam+microphone and bluetooth+wifi and that the system runs coreboot.
Apart from that, there is nothing that would want me get a Purism device again.
Published on 2025-06-08 in hardware
2015 oder 2016 wollte ich Kopfhörer kaufen und entschied mich für Sennheiser HD 461, weil sie von einer Marke mit gutem Leumund waren. Jetzt im Jahre 2025 löste sich das Wildlederimitat der Ohrpolster auf und fiel auseinander:
Der Sennheiser-Support meinte, daß ich die Köpfhörer wegwerfen muss:
Leider haben wir keine Ersatzpolster mehr für HD 461.
Auch Ohrpolster anderer Kopfhörer sind leider nicht kompatibel.
So einfach wollte ich mich aber nicht geschlagen geben und fand in einem Onlineshop folgenden Produkttitel:
Sennheiser HD461 / HD471 / HD429 / HD200 / HD201 / HD200Pro Official Replacement Ear Pads
Also sind die Ohrpolster der HD 200 Pro kompatibel bzw. die gleichen wie für die HD 461?
Ich bestellte die Ersatzohrmuschelpolster für insgesamt 23,39€ auf einer deutschen Onlineshopseite, bei der "Lieferung aus Schweden" stand. Auf der Rechnung stand dann eine Firma aus Großbritannien, und auf dem Kopfhörer "made in China".
.. aber die Ersatzpolster passten! Wieder etwas Elektroschrott vermieden.
Published on 2025-05-28 in hardware
Wir haben über unserer Kochinsel eine Dunstabzugshaube ("Inselhaube") Bosch DIE 975 A, die Slots für 4 Lampen mit Fassung G4 hat. Seit ein paar Wochen geben die LEDs allerdings einen nervigen Ton ab:
Meine Vermutung war, daß der Trafo nach 18 Jahren langsam nicht mehr will. Auf der Bosch-Produktseite ist in der Ersatzteilliste der Transformator 00187450 zu finden, zu einem Preis von 131,95€.
Ein Freund kam auf die Idee, daß der Trafo vielleicht zu wenig arbeiten muss und sich deshalb komisch verhält. Ursprünglich ist der Transformator für 4x 20W Halogen-Lampen mit insgesamt 80W Leistung ausgelegt. Durch die inzwischen eingebauten LEDs werden aber nur noch ~6W benötigt.
Erst im 6. Geschäft - einem Obi - fand ich noch Halogen-Lampen; die anderen Läden hatten alle nur noch LEDs. Mit dem Einbau einer 20W-Halogenlampe war das Störgeräusch verschwunden.
Die durch die Halogenlampe erhöhten Energiekosten erreichen bei 1h Nutzung pro Tag erst in ~75 Jahren die 130€, die ein neuer Trafo gekostet hätte.
Published on 2025-05-26 in hardware
I finally found an open source Android application to create image collages (combining several images/photos into a single one): Image Toolbox. The source code is available on Github, the app is installable via F-Droid
Image Toolbox's collage maker tool is available under Create -> Collage Maker. It lets you create collages from 2-10 images and has many layout options which can be switched on the fly.
You can zoom and rotate the single image's contents and move the visible image clip. Switching images with each other is no problem. The final image's aspect ratio can be changed, as well as the border radius, border color and output format.
Published on 2025-05-18 in android
Die Fernbedienung RC10 meines Satellitenreceivers Dreambox 7080HD von 2014 hatte ich 2019 schon ersetzen müssen, weil die Tasten nicht mehr richtig wollten. Jetzt in 2025 hatte ich wieder das gleiche Problem und habe mir nochmal Ersatz gekauft.
Bei der Programmierung des TV-Modus der Fernbedienung fiel mir auf, daß a) die Tasten-LED jetzt blau leuchtet und b) die 3-stelligen Codes nicht mehr funktionieren.
Das ganze ist eine neue Revision der Fernbedienung, die seit spätestens 2023-02 im Umlauf ist: 2023-03-01: Dreambox RC-10 leuchtet nicht Logo Dreambox! und 2023-02-23: Dreambox Ersatz Fernsteuerung.
Die alte RC-10 hat rote LEDs und versteht
3-stellige Programmiercodes.
Die neue RC-10 hat blaue LEDs, versteht die
4-stelligen Programiercodes der RC-20
und hat keinen beleuchteten Dreambox-Schriftzug mehr.
Außerdem ist die Rückseite nicht mehr glatt, sondern wie die Vorderseite
leicht rauh.
Published on 2025-04-29 in dreambox
Schon seit vielen Jahren nutze ich den Hibiscus-Server um die Kontoauszugsinformationen unserer Bankkonten automatisiert per HBCI/Fin-TS abzurufen und lokal zu speichern. Dadurch kann ich leicht in den Daten suchen um sie z.B. für die Steuererklärung zusammensammeln.
Mit dem Setup hatte ich 2 Probleme:
Nach 90 Tagen ist der automatische Abruf nicht mehr möglich, denn man muss manuell eine TAN eingeben.
Ich habe es nicht geschafft, mich vom Server über dieses Problem informieren zu lassen und merke es immer nur, wenn ich ab und zu mal auf dem Fernseher den Kontostand anschaue und das Aktualisierungsdatum nicht passt.
Es gibt keine Warnung, wenn der Kontostand unter z.B. 1000€ fällt.
In dem Fall kann Geld von einem anderen Konto verschoben werden - wenn einem das Problem bekannt ist.
Als Lösung für die Probleme habe ich 2 Plugins für Munin gebaut, die direkt auf einer MariaDB-Hibiscus-Datenbank arbeiten. Sie sind im munin-contrib-Repository verfügbar.
Gibt das Alter der letzten Kontoaktualisierung aus. Es kann eine Warnzeit angegeben werden, ab der Munin E-Mailbenachrichtigungen rausschickt.
Listet die Kontostände von allen oder nur einigen Konten auf. Warnungslevel für alle oder einzelne Konten können definiert werden, und Munin schickt dann Warnmails raus:
Subject: Munin dojo WARNING: home.cweiske.de::homebanking::hibiscus_account_balances home.cweiske.de :: homebanking :: a Konten Jana + Christian WARNINGs: J+C: Giro Christian #2 is 807.57 (outside range [1000:]).
In der Konfiguration gruppiere ich mehrere Konten thematisch auf einzelne Graphen:
[hibiscus_*]
env.user hibiscus
env.password reallysecret
env.host_name homebanking
[hibiscus_account_balances]
env.warning 1000:
env.acct_3_warning 2500:
env.include 1,2,3
env.graph_title a Konten Jana + Christian
[hibiscus_account_balances_tagegeld]
env.include 10
env.graph_title b Tagegeld
[hibiscus_account_balances_kinder]
env.include 7,8
env.graph_title c Kinderkonten
[hibiscus_account_balances_kreditkarte]
env.include 11
env.acct_11_warning -2000:
env.graph_title d Kreditkarte
Published on 2025-04-21 in bank, tools
My backup server boots up at 3 every night, runs the backup script and shuts down. This did not work for some time and I was not warned about it.
The solution for this problem:
I use the disk/file_age plugin available in the munin-contrib repository. To put it into a separate section, I added support for the host_name configuration to the plugin.
[backup_file_age]
env.host_name backup
env.file1_path /var/lib/munin/last-touch/baup-backup
env.file1_label Last baup backup
env.file1_warning 172800
env.file1_critical 604800
Published on 2025-04-21 in tools
At work I had to block some very annoying spammers from POSTing to the contact form on the website. I ssh'ed into the Ubuntu server and blocked their IP addresses with ufw:
$ ufw insert 1 deny from 203.17.245.205
Unfortunately, this did not work. The spammers were still able to access the nginx webserver in the Docker container:
203.17.245.205 - - [17/Apr/2025:11:58:28 +0200] "POST /contact HTTP/1.1" 200 24111 "https://example.org/contact" "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 OPR/89.0.4447.51"
It turns out that Docker heavily uses iptables for its container networking, and that the rules in the default INPUT chain of the filter table that are generated by ufw are too late in the game - earlier rules already route the packets into the containers.
The iptables section in the Docker documentation tells us that rules need to be put into the DOCKER-USER chain:
$ iptables -I DOCKER 1 -j DROP -s 203.17.245.205
In the end, the chain looked like this:
$ iptables -L DOCKER-USER --numeric --line-numbers
Chain DOCKER-USER (1 references)
num target prot opt source destination
1 DROP 0 -- 103.106.241.170 0.0.0.0/0
2 DROP 0 -- 113.176.64.56 0.0.0.0/0
3 DROP 0 -- 176.102.128.140 0.0.0.0/0
4 DROP 0 -- 193.163.116.88 0.0.0.0/0
5 DROP 0 -- 103.255.9.53 0.0.0.0/0
6 DROP 0 -- 116.212.106.162 0.0.0.0/0
7 DROP 0 -- 5.254.26.39 0.0.0.0/0
8 DROP 0 -- 5.254.26.37 0.0.0.0/0
9 DROP 0 -- 203.17.245.205 0.0.0.0/0
10 DROP 0 -- 172.111.204.6 0.0.0.0/0
11 DROP 0 -- 94.43.48.194 0.0.0.0/0
12 DROP 0 -- 188.169.38.71 0.0.0.0/0
13 DROP 0 -- 181.204.9.178 0.0.0.0/0
14 DROP 0 -- 103.246.84.78 0.0.0.0/0
15 DROP 0 -- 122.175.12.83 0.0.0.0/0
16 DROP 0 -- 92.255.57.64 0.0.0.0/0
17 DROP 0 -- 185.208.8.200 0.0.0.0/0
18 RETURN 0 -- 0.0.0.0/0 0.0.0.0/0
Published on 2025-04-18 in linux
A collection of links regarding the history of the PlayJam GameStick microconsole.
Age | Date | Event |
---|---|---|
2013-01-02 | Kickstarter funding campaign started | |
1 month | 2013-02-01 | Kickstarter funding campaign ended, 5691 supporters, 647.658$ |
10 months | 2013-10-24 | First Review at golem.de |
11 months | 2013-11-20 | German backers receive Gamesticks: GameStick ist da! |
1y 5m | 2014-05-08 | Last firmware update 0.9.2071 |
1y 5m | 2014-05-31 | Kickstarter docks were shipped |
1y 8m | 2014-08-15 | Inventory sell-off begins: GameStick for 19.99$ |
3 years | 2016-01-05 | PlayJam says GameStick will be running in the forseeable future |
3y 2m | 2016-03-09 | Last Facebook post by PlayJam |
4 years | 2017-01-09 | Official server shutdown |
Date | Category | Event |
---|---|---|
2012-12-10 | PlayJam | First PlayJam tweet: We are live with our pre-launch campaign. Follow us! Visit http://GameStick.tv or like us on http://facebook.com/GameStickNews |
2013-01-02 | Kickstarter | Kickstarter funding campaign started |
2013-01-03 | Kickstarter | Update #1: GameStick Day 1 - Wow. |
2013-01-09 | Kickstarter | Update #4: 320.000$ reached: Stretch Goals Announced! |
2013-01-11 | Kickstarter | Update #6: Stretch goal 1 reached: Stretch #1 Reached! |
2013-01-18 | Kickstarter | Update #8: 400.000$ reached: You spoke and we listened.. |
2013-01-30 | Kickstarter | Update #13: Miracast support: Working with Miracast |
2013-02-01 | Kickstarter | Kickstarter funding campaign ended, 5691 supporters, 647.658$: Wow! What a result! Incredible! Blown Away! |
2013-03-19 | Kickstarter | Update #17: Developer unit in production: Dev Kits, Partnerships and Further Updates |
2013-04-19 | Kickstarter | Update #23: GameStick DEV kit Unboxing Video |
2013-05-27 | Kickstarter | Update #29: GameStick Features on the BBC. |
2013-06-13 | Kickstarter | Update #34: Companion app: Demo showing PlayJam's Companion App working the GameStick UI |
2013-10-23 | Kickstarter | Update #45: Shipping stalled: Shipping update. |
2013-10-24 | Review | Golem.de: Playjams Gamestick im Test: Die Android-Konsole für zwischendurch |
2013-10-30 | Review | Eurogamer: GameStick review: Stick it. |
2013-11-05 | Review | Techradar: PlayJam GameStick review: The latest Android console doesn't get the formula right |
2013-11-07 | Kickstarter | Update #46: Sticks are shipping, Dock shipping delayed: Update - Feedback. |
2013-11-11 | Review | Engadget: GameStick review: Android console gaming still awaits its king |
2013-11-11 | Store | 45 games available: Engadget review |
2013-11-15 | Store | Over 50 games available: GameStick: Aktuelle Spieleliste |
2013-11-20 | Kickstarter | Germans backers receive Gamesticks: GameStick ist da! Die Verpackung… |
2013-12-04 | GameStick | Firmware update 0.9.2049: (source) |
2013-12-12 | GameStick | Firmware update 0.9.2049 report: GameStick Software-Update 0.9.2049 |
2014-01-19 | Store | 68 games available (source) |
2014-02-03 | GameStick | Firmware update 0.9.2058: (source) |
2014-02-06 | Kickstarter | E-Mail: Docks are still not shipping: Dear Backers, Let me start by apologizing for the lack of news and or updates on the GameStick project over recent months - in particular on the status of the docks.[...] |
2014-04-04 | Kickstarter | Last Kickstarter page update #47: Dock situation: Update. (archived copy) |
2014-05-01 | Store | 84 games available (source) |
2014-05-08 | GameStick | Firmware update 0.9.2071 (source) |
2014-05-21 | Kickstarter | E-Mail to Backers: Dock will be shipped next week Update: GameStick Dock |
2014-05-30 | Store | 90 games available (source) |
2014-05-31 | Kickstarter | TopFree got its kickstarter dock: GameStick Dock im Praxistest |
2014-07-12 | Review | Telegraph PlayJam article, 35000 units at GameStop: Get ready for TV gaming to move up a gear |
2014-08-15 | Sell-off | Price at GameStop: GameStick 19.99$ (source) |
2014-08-21 | Sell-off | Price at GameStop: Dock 15$ (source) |
2014-09-01 | Sell-off | Price at GameStop.com: GameStick 19.99$ (GameStick für $19.99, source 2) |
2014-09-18 | Sell-off | PlayJam sells off inventory on ebay Gamestick Sell off? |
2014-09-23 | GameStick | Custom Firmware CFW 1.4 (source) |
2014-12-05 | Sell-off | Price in GameStop store: GameStick 17$, Dock 5$ (source) |
2015-01-05 | Sell-off | Price at Gamestop: Controller 9$ (source) |
2015-10-20 | PlayJam | GameStick website redirects to flareplay.com, only zone.gamestick.tv still available: Neue PlayJam-Konsole FlarePlay und kostenlose AGameAWeek Collection für GameStick |
2015-11-23 | PlayJam | Playjam Titan prototype device sent to shanti: PlayJam Titan, (Gen 2 Gamestick?) |
2016-01-05 | PlayJam | PlayJam says GameStick will be running in the forseeable future: Tweet |
2016-02-26 | PlayJam | Last Tweet by @PlayJam |
2016-03-09 | PlayJam | Last Facebook post by PlayJam |
2016-05-15 | Store | 177 games available (source) |
2016-10-09 | Store | Game download not possible since months: GameStick ist „tot“ |
2017-01-09 | PlayJam | Server shutdown (taken from topfree screenshot) |
2017-01-11 | Store | Topfree blog post about server shutdown with screenshot of Gamestick homepage: GameStick: Das offizielle Ende |
2017-01-12 | Store | 177 games available (source) |
2017-11-09 | Store |
Shutdown: "Store closed earlier this year":
Comment:
No - they closed the store earlier in the year. As far as I know you can't download anything from the GameStick servers any more. |
Published on 2025-04-11 in gamestick