Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
Posted on 22-05-20, 01:47 in I have yet to have never seen it all.
Dinosaur

Post: #1101 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
https://www.animenewsnetwork.com/news/2022-05-18/japanese-law-office-receives-bomb-threat-following-touhou-project-fans-trademark-rights-controversy/.185799

This is a big pile of WTFs I don't even where to begin:

- Didn't knew Japan also suffered of the (highly American) disease of copyright trolls. I guess greedy assholes are pretty much worldwide these days (seriously, charging ~$800 for "licensing" an IP that doesn't even belong to you in first place?! Dude, whoever you are, set the opium aside because you're literally higher than an Airbus!)
- Yukkuris are a meme almost as old as Touhou Project itself, so old that your "prior art" is a tag on nearly every imageboard, starting with frickin' Japan-hosted Pixiv. But I guess incompetent "can't do due diligence" lawyers and government employees are also worldwide too. Yes, I can picture a random Japanese government office full of fax machines and rubber stamps, but come on, failing to do their basic prior art research before granting a clearly bogus trademark is grossly negligent at best, and borderline criminal at worst! (Thankfully ZUN and friends have enough ammo to shot down this trademark that should haven't be issued in first place, but it's a complete waste of time and money for everybody involved)
- What the hell is wrong with rabid otakus sending death threats to everything they dislike?! Knock off that shit, morons.

So this is another fine case of FFS JAPAN!!!

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-24, 02:43 in I have yet to have never seen it all. (revision 1)
Dinosaur

Post: #1102 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Viz print ads for Sega consoles

Those Brits really knew how to sell their Segas - none of this "family friendly" Nintendo nonsense that will conveniently ignore anyone over 12 years old. Only in the former UK of yesterday you could openly say "FUCK" and "SHIT" on ads on printed media for selling game consoles and software, and actually achieving results! Results other than "lawsuits" and "getting the censors on your arse", of course.

Too bad none of those ads would fly today on this pathetically "PC" world where we're currently living on (even on adult-oriented media), as puerile toilet humor will quickly unleash the SJW Twatter mobs which have became ridiculously overpowered :/

To be this good takes AGES. To be this good takes WHAT NINTENDON'T.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-25, 11:46 in Computer Hardware News
Dinosaur

Post: #1103 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
AMD just launched a Celeron recycled a long forgotten codename from the competition:
https://www.anandtech.com/show/17400/amd-announces-mendocino-apu-6nm-mainstream-mobile-zen-2-laptop-chip-coming-in-q4

From the specs, it seems to be basically a die shrink of Steam Deck's custom APU, but now available for cheap laptops.

...and it had to reuse an Intel codename that for some evokes good memories (Mendocinos were fine overclockers), and for others, very sour ones (Celerons were often paired to garbage mainstream junk from Compaq and others). Ah well, at least Mendocino, California can now boast about being represented on TWO decent-ish x86 CPUs.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-25, 22:00 in I still HATE smartdevices (revision 1)
Dinosaur

Post: #1104 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
https://www.ghacks.net/2022/05/19/google-forces-total-commander-removes-the-ability-to-install-apks/
https://www.ghisler.ch/board/viewtopic.php?t=76643

FUCK
OFF
AND
DIE
GOOGLE ALPHABET!


Seriously, this is the class of BULLSHIT I would expect from fucking Apple! It's almost as obnoxious as Xiaomi trying to stop me from owning my own cellphone because Xiaomi thinks I can hurt myself. Thankfully you can still sideload, but come on, even fucking Chrome let you install APKs!

And to the morons threatening to defect to Apple over bullshit like this: fuck off too. It's like fleeing Cuba to North Korea.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Dinosaur

Post: #1105 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Since the T40 is now considered Vintage IBM™ by many out there, and people have been trying to install Linux on those things since IBM sold them new (with various degrees of success), and all the guides you will find online are 1) hopelessly outdated and 2) more patchy than Cyberbugged 2077, here is my take on how to install Linux on a T40 in 2022:

- Distro chosen: Debian 11, what else? For maximum convenience use the unofficial "firmware" netinst ISOs, since it will save you some work by installing the nonfree blobs (and enabling the non-free/contrib repos for you)

- You want at least 1GB RAM for modern Linux installs, even if you're planning to use a lightweight desktop. Don't bother with anything less than that. 1GB DDR1 sticks are still cheap (albeit difficult to find, but definitely NOT unobtanium!), and the T40/1/2 line will take two of 'em, so max it out!

- 32-bit kernels these days usually require PAE, but Pentium Ms officially do NOT support PAE/NX. Except that they actually DO. ALL of them! But due to Intel being Intel, the PAE/NX flags are not exposed via CPUID, so many distros will either not boot at all, or will resort to a non-PAE kernel (which you do NOT want). Luckily "forcepae" is a thing on Linux, so you need to append that to the boot arguments on Debian installer (hit TAB at the installer bootmenu to edit the bootargs, just append "forcepae" at the end and hit ENTER to boot). Magic™ will happen and the "forcepae" flag will propagate to the installed system GRUB config.

- I went with no swap partition (a complete waste of a MBR entry, and I hate extended partitions) - a swapfile is fine these days.

- MATE works fine on these machines, so I went with that.

- Video: My T40 has a Radeon 7500, and the X.org drivers for those have aged VERY BADLY. Performance went from "zippy" circa 2006 to "barely useable" in 2022. Anything involving video playback of any kind will suffer inmensely, like if there was no video acceleration at all! Remember: those vintage R100 Radeons greatly benefited from XAA accel, which was purged from X.org nearly a decade ago, and noone bothered making those GPUs working decently with EXA (and forget about GLAMOR and friends - those ain't no R600!). You get a basic 2D desktop and that's all. You may enable software compositing (it's even the default these days on MATE) if you wish, but don't expect performance at all for any kind of multimedia workloads, as the CPU isn't even the bottleneck here :( Welcome to ATi driver hell! At least X11 won't crash or hang... T41p/T42 users might have better luck, as those have the Radeon 9600 as an option, and drivers for those (R300) are less horrible.

- Audio: Something something Analog Devices something AC'97. Just Works™. You may or may not want to use PulseAudio, depends on how weak is your CPU. Since the volume hotkeys on ThinkPads are special snowflakes, you want to install tpb to get a crude OSD for those (they're controlled by the EC, not by the audio codec). Alternatively, ALSA exposes a secondary audio device for that EC mixer. BE CAREFUL TO YOUR SPEAKERS - THEY'RE FRAGILE!

- Networking: Back when those machines were hot, it was basically wired or nothing. WLAN was a pain due to shitty drivers (either primitive FOSS drivers or BUGGYBUGGYBUGGY proprietary blobs) and a crude 802.11 framework. Fast forward to 2022, and all 3 WLAN options for the T4x series (airo, ath5k, ipw2200) should Just Work™. Except that those cards are JUNK! (seriously: mine had a Intel 2200 which would constantly drop the connection... ON WINDOWS! Those cards are known to die fast). Do yourself and your ThinkPad a favor, go buy a TP-Link TL-WN861N (they're getting pricey!), and either get fresh underwear and flash a unlocked BIOS (look for T40-T41-T42-SLIC2.1_7U_no_1802.zip) or at least run any of those no-1802 bootdisks (safe, but you'll need to redo it if you ever change your CMOS battery) before swapping cards. Your wireless router will thank you~~~ Wired should Just Work™ (it's an e100 or e1000 depending on your config), but I didn't bothered this time.

- PCMCIA: Just Works™. Tested with a ol' analog TV capture card (KWorld NB-TV 100, requires "card=81 tuner=54" params to saa7134 module, or the driver will rant at you about pennypinching bastard OEMs), although video performance is horrible due to the subpar Radeon drivers.

- Laptop bits: suspend Just Works™. Haven't tested hibernation (I don't use that anyway). My battery is a brick, so can't test battery life tweaks.

- ThinkPad bits: Mostly Just Works™. All EC sensors are properly detected. Haven't tried messing with fan control yet (but will definitely do once I manage to upgrade the CPU on this thing - already tracked down a nice Dothan part, hope it turns out to be another lucky find). Already mentioned the volume control stuff on the audio section. Nipple mouse works as expected. tpb will also take care of the other TP-specific OSD bits (LCD brightness/ThinkLight). "Access IBM" hotkey is mapped to XF86Launch1, so feel free to bind it to something.

- Oh, I guess there is a DVD drive there. Yawn~

- USB ports Just Works™, as expected: Ports not tested: parport, S-Video out.

- There is a winmodem - ALSA claims the device (snd_intel8x0m), but of course it's useless without a proprietary blob that doesn't really exist anymore. Maybe if I'm THAT bored, I could try making the Buster package working on Bullseye,,,

- Amazingly I found some guy in MercadoLibre selling a Port Replicator II compatible with this thing. If I can find yet another $10 to spare on this thing, I would get an extra USB port, a DVI-I port, and a honest-to-God RS232 serial port. Worth a test, as finding information on Linux and docking stations is hard.

Veredict: This T40 would be a worthy replacement for my nx9010, if it weren't for the failsauce ATi GPU drivers :/ Still, if you can stand the subpar video performance, and are willing to spend a few bucks on much-needed hardware upgrades, it makes a solid XP/Linux dualbooter for many of your modern vintage computing needs.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Dinosaur

Post: #1106 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Oh wow, the modem blob WORKS! Not the kernel one (that's broken, forever), but sl-modem-daemon from Buster will install and use the ALSA driver instead.

Chalk another one for the "doing pointless stuff for teh lulz" then.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-26, 18:32 in (Mis)adventures on Debian ((old)stable|testing|aghmyballs) (revision 1)
Dinosaur

Post: #1107 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Part of the reason any 3D workload on Vintage ATi R100 hardware sucks on modern Linux: your modern DE may be enforcing software rendering on Mesa (which these days is llvmpipe), completely ignoring the prehistoric OpenGL 1.x bits on your metal. I didn't discovered this until I noticed that glxinfo was reporting llvmpipe/OGL 4.5 as my 3D device, which is obviously not right!

Long short story: LIBGL_ALWAYS_SOFTWARE was being set on each MATE logon, without any way to override it (except manually from a xterm). After (once again) wasting my time in fruitless Google searches, a kindred soul at #debian pointed me to the correct track:

1) mate-session checks if there is working GL acceleration on logon...
https://sources.debian.org/src/mate-session-manager/1.24.1-2/mate-session/main.c/#L667

2) ...which relies on a helper proggy, mate-session-check-accelerared, which among other things tries to match the renderer string against a blacklist...
https://sources.debian.org/src/mate-session-manager/1.24.1-2/tools/mate-session-check-accelerated-gl-helper.c/#L312

3) ...which only contains a few entries, including any Radeon prior to R300!
https://sources.debian.org/src/mate-session-manager/1.24.1-2/data/hardware-compatibility/

If those checks fail, you'll get llvmpipe software rasterizer. I don't know why MATE explicitly has blacklisted R100/R200 (maybe too buggy/old/slow?), but disabling HW GL for everybody is rude. If you absolutely want to use your GL silicon bits, all you need is to comment out the R100/R200 blacklist entry on the blacklist, which lives at /usr/share/mate-session-manager/hardware-compatibility, logoff, then logon again. Haven't noticed any breakage even with software compositing enabled, but then, that DID boosted my 3D performance: glxgears went from 13FPS to almost 60FPS at 1024x768! :D

If only nerds crowdfunded other nerds writing high performance video drivers for vintage hardware, instead of wasting their time doing drivers for shiny new Apple appliances...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-30, 02:48 in (Mis)adventures on Debian ((old)stable|testing|aghmyballs) (revision 1)
Dinosaur

Post: #1108 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Now that my SL7V3 (that's a top-of-the-line Dothan 2.1GHz for 400MHz FSBs) arrived, let's see if we can do something to alleviate the multimedia woes on this T40:

- CAUTION: the 2.1GHz part is HOT. Literally - it easily reaches high-80s when the pedal gets pushed to the metal, and if it goes over 87ºC, it will downthrottle to 600MHz to prevent scorching itself. I've heard there are two fancoolers for T4x's, but unless you care about the GPU (well, you should - even the lowly 7500 gets a bit toasty when pushed to the max), don't bother with the "long" fan assembly as it won't really improve CPU cooling. A good thermal paste is a must in any case!

- Windows: there is not much difference between latest VLC (which STILL runs on XP!) and some random old codec pack (I used the last XP-compatible release of CCCP). Do NOT use OpenGL (on VLC) or any of the fancy EVR modes (on MPC-HC). The limit is at 720p 30fps 8-bit H.264, which for most media the Dothan 2.1 will play mostly fluid.

- Linux: GPU power saving mode is set to whatever mode the video BIOS sets at boot, crippling somewhat video playback performance (unthrottle it with "echo high | sudo tee /sys/class/drm/card0/device/power_profile", but careful with the cooling!). mpv is hopeless no matter the renderer as it is aimed to MODERN machines, so don't bother. VLC is MOSTLY OK as long as you switch the renderer to X11 (that is, X11 shared memory AKA "ancient junk that doesn't even use your videocard at all"), but performance is still horrible if you go beyond 360p. Surprisingly the best results are achieved with good ol' Xine with OpenGL (set renderer to "opengl", NOT "opengl2"!), but as expected, Xine has aged badly too: on whatever build Debian ships with Bullseye, I only managed to play a few videos - everything else went with garbled audio or no playback at all, despite Xine using FFmpeg at its core! Oh, and although I got decent framerates with some 720p material, image jumps A LOT with the few 360p videos I tried! X11/shm gives more stable playback, at the cost of lower performance.

Speaking of cooling, the only fan control solution that works with modern distros on ThinkPads is the aptly-named thinkfan. It's even on Debian repos... except that for whatever reason it's NOT on Bullseye, so you'll need to build your own DEBs. If you choose to build from the source packages at testing/Sid, you'll notice that upstream have switched from whatever arcane config format they used to the hipster-friendly YAML. Here is my current test setup:
sensors:
- tpacpi: /proc/acpi/ibm/thermal
# [CPU, mPCI, GPU]
indices: [1, 2, 4]

fans:
- tpacpi: /proc/acpi/ibm/fan

levels:
- [0, 0, 40]
- [1, 35, 50]
- ["level auto", 45, 75]
- ["level disengaged", 70, 255]


Best of all, thinkfan is not limited to ThinkPads - if your system has proper hwmon drivers that allow fan control, you can use it on your laptop (or desktop) too! I guess I've found a good replacement for i8kmon (which also have a somewhat arcane config file syntax) on Dells then (will be testing on some Inspirons Real Soon™). Note that the "level auto" (IBMesque for "let the EC do its job and hope it does it well") and "level disengaged" (IBMesque for "uncontrolled jet blast" AKA "11") are ThinkPad-specific, and all other levels are hardware/model-specific (on Thinkpads you get levels 0-7 aside of the special levels, while on Dell laptops, it's 0-3, or even 0-2 as 3 is often an alias to level 2)

...wonder if the fan on my Asus is also controllable by thinkfan, as thermals on this laptop have always sucked since the day I bought it...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Dinosaur

Post: #1109 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
https://wiki.archlinux.org/title/fan_speed_control#ASUS_laptops
So apparently I DO have some sort of control over the fan on my Asus... kinda, sorta:

- Only 1 (manual mode) or 2 (automatic mode) work over pwm_enable (0 aka "full speed" won't work on my K53SD), but setting it to manual will break fan speed monitoring!
- Setting pwm to 255 (max speed) works (it even works on automatic mode, and will switch back to manual), but again, you won't be able to monitor fan speed!
- Fortunately fan speed monitoring can be regained by switching to automatic mode (pwm_enable = 2)

So yeah: half-assed implementation as expected from Asus laptops under Linux. Not really worth the effort anyway :/

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-05-30, 20:34 in Mozilla, *sigh* (revision 1)
Dinosaur

Post: #1110 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
How to integrate SeaMonkey with your Debian desktop:

0) Install SeaMonkey to /opt/seamonkey, make sure your user owns that folder if you want for autoupdates to work.

1) Integrate with the alternatives system:
# update-alternatives --install /usr/bin/x-www-browser x-www-browser /opt/seamonkey/seamonkey 80 
# update-alternatives --install /usr/bin/gnome-www-browser gnome-www-browser /opt/seamonkey/seamonkey 80

### This one is optional, but recommended if you want to directly launch SeaMonkey from a terminal without using the default symlinks
# update-alternatives --install /usr/bin/seamonkey seamonkey /opt/seamonkey/seamonkey 80


2) Make a .desktop launcher, either at /usr/share/applications/seamonkey.desktop (systemwide), or ~/.local/share/applications/seamonkey.desktop (per user)
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=/opt/seamonkey/chrome/icons/default/default48.png
Name=Seamonkey
Comment=Web Browser, Email/News Client, HTML Editor, IRC Client
Exec=/opt/seamonkey/seamonkey %u
Categories=Network;WebBrowser;Email;WebDevelopment;IRCClient;
# this one should be a one-liner - had to split to not break the board layout!
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;
x-scheme-handler/mailto;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;image/gif;image/jpeg;image/png;
StartupWMClass=Seamonkey
StartupNotify=true


3) MATE will behave stupid when letting you select SeaMonkey as your preferred web browser/email agent. I guess this should solve itself after several logons/logoffs, or whatever. YMMV on other DEs.

4) Obviously, don't forget to run SeaMonkey and click that magical "I want to be your default web browser and everything else" button when prompted.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-01, 21:42 in I still HATE smartdevices
Dinosaur

Post: #1111 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
If MIUI's nasty bad habit of saving screenshots to lossy JPEG instead of sane PNG pisses you off (including the non-standard save location of /DCIM/Screenshots), nuke com.miui.screenshot (it's fine if you disable it with pm disable-user, but you actually want to pm uninstall yet another pointless piece of Xinnie's bloatware), and you'll get stock Android 11 screenshot experience... which is meh, but at least you get sane PNGs as $DEITY intended.

Also, recently I got an update for MIUI 13 on my phone. After taking over half an hour to install, surprisingly I didn't had to debloat again, aside of Xiaomi's Calculator, some T-Mobile Deutschland spyware, and some Chinesium payment provider crapp. And according to Teh Googles, my phone is "enterprisey-friendly", and will be supported until January 2025, while according to Xiaomi, the Redmi Note 11 (vanilla, non-Pro, non-5G) may even get Android 12/13 sometime before EOL. I guess this is the first time I got a cellphone that wasn't already EOL'd from the moment I took it out of the box...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-02, 22:01 in ThinkPad speakers repair... ghetto style
Dinosaur

Post: #1112 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Sourcing working speakers for my T40 turned out to be more difficult than expected...

When I got this machine, one speaker was quite silent, while the other sounded fine... until the day I installed Debian, where suddenly it broke and started emitting heavily distorted ear rape. Went to MercadoLibre (what else?), found a guy selling T40 parts (turned out to be a former laptop repairman with a nice stash of old parts), and not only scored a top-of-the-line SL7V3 Dothan CPU for this thing for $9 (a complete steal compared to eBay prices, where sellers are aiming straight to the moon), but also a set of supposedly working T40 speakers for $5 (plus ~$4 shipping).

The CPU was fine, but the replacement speakers weren't. They were DEAD SILENT. Called the seller, he claimed he had tested them prior to shipping with a multimeter (!??!), and that it could be the amp IC on my ThinkPad that could be shot instead. But I put my old broken speakers back, and I got sound! So yeah, nope. After some back-and-forth over the phone, the seller agreed to send me a couple extra speaker sets (and of course, another ~$4 for the parcel service). Those arrived today, and unfortunately I got another pair of duds! One set was completely dead (just like the first one), while the other (which was missing the grounding flap) actually has sound on one channel! Heavily distorted sound, similar to the still-working speaker on my laptop... Hmm...

Let's take a look at the speakers assembly (IBM FRU 91P8396 for a 14.1" T40). They're small oval things glued over a plastic frame, with another glued-on plastic cover to protect the wires, then a piece of thin folded metal (for grounding) goes glued over those, and the wires end in a 4-pin connector that goes to the motherboard (just next to the CMOS battery connector). As for the actual speakers, let's check Wikipedia on how a speaker is supposed to work: there is a flexible clear plastic diaphragm surrounded by another yellowish plastic oval that goes glued to the speaker metal frame (that oval is unsurprisingly called "surround"). Almost all of the dead speakers were intact, but one of the duds and the two last working speakers among the bunch had their surrounds clearly broken. Even more interesting, I noticed that if I put my finger over the broken surround gaps, distortions went mostly away, improving audio quality! This is obvious: the broken surround was letting air leak inside, distorting the air being pumped by the driver, and therefore leading to ear rape.

MacGyver to the rescue!
So my mission was simple: take the two last working speakers from separate sets, re-seal the broken surrounds, and mount them on a single assembly. Re-sealing was simple - I used liquid silicone glue (the same glue that you can buy at any art crafts shop or Chinesium supermarket), which actually worked beyond all expectations. Swapping speakers was matter of soldering (anyone competent with access to decent soldering gear can do this blinded with a hand tied to their back, while me and my craptacular 25W iron with a bent rusty tip were lucky to not kill the last two working speakers, or melting plastics elsewhere!). I'm amazed at the end result: sure, those speakers sound tinny (I guess they sucked even when they were new, according to reviews elsewhere), but at least beeps sound like beeps and not like car crashes! Songs are now listenable! (although vocals on some are kinda quiet). I'm surprised (and not in a good way) that while many of the parts of the T40 were made in Glorious Nihongo, some IBM beancounter decided to cheap out and shave out some pennies from parts like those Chinesium speakers that won't last for long (it's the first time in my life where I find dead laptop speakers, to be fair)

The end result:

U.N. Speaker Was Heard? I guess Flan would approve anyway~
Notice also the ghetto CMOS battery "mod" (to whoever invented batteries with welded tabs: FUCK YOU!), and the non-IBM-approved 802.11n WLAN card.

If you ever decide to do this at home, here are a few tips:

- Do NOT use hot glue!
- Use barely enough glue to seal the openings (try to not get excess glue over the diaphragm or inside the speaker). Liquid silicone is very sticky and cures slowly, so be gentle~
- To reach the speakers assembly, you need to remove in this order: battery, HDD (one fat head screw), keyboard (4 screws #3), palm rest with touchpad (8 screws: 4x#1, 1x#2, 3x#3 including a weirdass long screw with thread only at the tip which goes next to the HDD bay and won't fit elsewhere!), speaker assembly (two non-numbered screws near the front of the machine).
- For testing, temporarily plug back the keyboard (fortunately you've got the nipple™ so you won't miss the touchpad while testing), and be careful when hotswapping speakers.
- Yes, you need to open the lid to remove the HDD (the "bento box" lid has a weird shape at the right which overlaps the HDD bay). Also remember: the HDD label always FACES DOWN! This is something surprisingly easy to miss, as on many laptops where the HDD slides in from the sides, the label usually faces upwards. Not on this ThinkPad - try to force things and you'll bend the fragile pins on the PATA connector!

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-05, 02:42 in I have yet to have never seen it all.
Dinosaur

Post: #1113 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Today I got "blessed" by the Gods of Incompetent Utilities once again: one of those Soviet Venezuelan Special Massive Power Surges™ just zapped my metal. AGAIN.

Victim count:
- Every single surge protector on the upper floor of the house. At the very least, exploded fuses.
- My last APC UPS. When those things go boom, there is no hope to recover... unless you still have some warranty left on your gear. While I've had nothing but great service from APC distributors in Venezuela, they can do nothing (except expensive off-warranty repairs?) when your 3-year warranty ran out in 2019 :/
- A LED bulb that literally became artillery shell! The bulb internals EXPLODED and the cover got shot out during the surge event! Like, WTF, this is my room, not frickin' Ukraine!
- The charger from my nx9010. Forget about reading email or playing old VNs, I guess (and this was a beefy 90W brick!)
- And of course, Saki, my beloved routerbox. She just stalls at boot without POST, and all keyboard LEDs on. No amount of fiddling helped this time. Apparently the motherboard (that M535/8 AKA PCChips least sucky mobo ever) got shot. Tried swapping every single component (PSU, RAM, CPU, expansion cards), but nothing, no dice. A minute of silence for that awesome girl that served me well through my eager college years towards the hyperinflationary hellscape of last month (if we believe the bullshit of paperboard "lolconomists" here). You'll be REALLY missed! :(

BUT!

In the middle of darkness, there is always a shining beacon of hope. As any of my retroboxes will testify, Soviet Venezuela is a no-fly zone for retrocomputing enthusiasts. You can't simply go into MercadoLibre and order a random Socket 7 mobo, so instead you need to grab the first thing you can find in your way and run. I did had a spare Socket 7 mobo (a PCChips M571) but it was dead too (IIRC it died when I tried testing a 6x86MX - it never booted again since then), so instead I went looking around and found that one of my uncles was trying to get rid of his old Celeron box.

It was a Compaq Presario. YUCK! With a hideous fatass front cover, very yellowed and with stupid Xpress-On swappable faceplates. It screamed "supermarket deal" everywhere (and indeed it was - he had bought it at a big-chain hypermarket 20 years ago). But hey, it booted, and it was from a slightly newer vintage than my Socket 7 gold, so what I have to lose? And it was FREE™ (not unlike the $100 from my emergency fund that I had to spend on a new noname UPS and new surge protectors... although those will do nothing for fixing the ticking time bomb known as "my house was built without grounding at all, just like 90% of homes in Venezuela")

Here is what I got now:
- Compaq Presario 5000LA chassis. The service manual is a pathetic joke.
- Craptacular Compaq Socket 370 mobo (codenamed "BMW" according to the service manual)
- Celery 766 (66MHz bus). What a weird speed!
- 64MB PC133. Yes, SIXTY FOUR MEGABYTES. And unfortunately there is a wide gap on my RAM stash between "late era SIMMs" and "early DDR1".
- Integrated Intel graphics sewage. There is no AGP slot, and even if you add a PCI videocard you can't stop Intel's MCH stealing already scarce main RAM
- Integrated ESS Maestro soundchip that I absolutely do not need.
- Absolutely useless BIOS setup program that (unlike IBM) doesn't let me disable hardware I don't need, or set sane IRQ settings.
- Quantum Fireball Low Cost Airline Technology, the signature of SUCK by Compaq™.
- Four USB 1.1 ports (amazingly, all of them behind a USB hub chip on the motherboard, as Intel's early ICH1 USB controllers only had two ports)
- LG 48x CD-ROM drive.

But not everything is that horrible - a Socket 370 means that I could actually run non-EOL'd Debian on this thing! But not with 64MB RAM, sadly: I tried plugging Saki's boot drive, and while it tries to boot, it quickly dies after the kernel runs out of RAM while decompressing the initial ramdisk (WTF, talking about bloat!). Incredibly enough, I still held another backup HDD with a even older setup (Wheezy), and this one boots fine (albeit quite slow) on such a constrained RAM setup! So welcome back to 2018, and please don't hack me where I get my shit sorted out ;)

Will Saki live on in its new body? Oh hell no. It's time to move on - fortunately PC133 SDRAM sticks are not hard to find, so once I boost RAM on this thing (will try going with 256MB, can't find the real limits for this Compaq hellstew), I'll start from scratch. Watch this space...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-05, 05:10 in I have yet to have never seen it all.
Dinosaur

Post: #1114 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
If you're looking for ancient Compaq crapbox BIOS updates, don't search for "Compaq <insert model here> BIOS update", as you'll hit dead ends (and HP support site is unusable webshit which won't even let you select a proper model from a list anymore, unlike Dell).

Instead, search for "Compaq <insert model here> System ROM Update", or "ROMpaq". You should eventually end with an .exe file named "spXXXXX.exe", where the X's are digits (Compaq SoftPAQ IDs). If you absolutely don't trust DriverGuide garbage, all you need is the SoftPAQ ID (hopefully whatever shady driver download site will not hide the real filename), and there are plenty of unofficial mirrors of Compaq/HP long-defunct FTP site.

Time to wet my underwear for... how many firmware updates have I done this year? Let's recap:
- ThinkPad T40... six times (2xBIOS, 2xEC, HDD, RPC-1 DVD-ROM)
- Dell Inspiron 15 3500 (had to figure out how to FORCE it, as this laptop would always just hang while trying to reboot during the pre-flash procedure)
- TP-Link WR743NDv1 DD-WRT update (involving a jumpflash back to OFW)
- Some rubbish AMD-powered Dell Inspiron laptop (unrelated to the Inspiron 15 3500, but clearly one of its predecessors) belonging to my locksmith
- A much nicer biz-class Dell Latitude laptop which I did for a client
- Modded 3DS for a cousin (that hardly counts as a reflash, but it's still very brick-prone if you aren't paying atention!)
- Couple of official updates for my Redmi Note 11
- Some random WD laptop HDD, after failing refurbishing (had to revert everything to the starting point, and one of the steps involve flashing the delicate boot ROM)
- HP Compaq something something office-class desktop box for the same cousin from the 3DS
- Still with HP, had to revive a HP 16GB pendrive that commited firmware sudoku with some shady Sovietware™. Lost all data on it (thankfully nothing important), and no longer says HP on the firmware, but it's no longer a (tiny!) brick.

I guess I like living at the edge...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-05, 22:52 in Internet numbers bragging thread
Dinosaur

Post: #1115 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
To finish a shitty weekend of blackouts, charred network gear, and horrible things in general, after windy rains and yet another 6-hour blackout, my CANTV line is REALLY dead this time.

I heard the CANTV Mafia™ is now charging $100+ to repair your phone... but then they're working very under the radar as they face prosecution, both inside and outside.

Ah well, back for the shitty 0.3G cellphones for the next 3 years? Now with a 4G Digitel line that it's Beyond Useless.

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-07, 00:04 in I have yet to have never seen it all. (revision 1)
Dinosaur

Post: #1116 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
No reflash fun for the Compaq (DMI string: Compaq Presario 5000LA 470010-120 /06C0h, BIOS 686C3 04/18/2001) - it already had the latest BIOS ROM release available for its series. Boo!

Anyway, went into another computer junkyard research expedition today to avoid paying yet another $4 to a certain parcel shipping company. The results will surprise you... NOT!

- My trusty laptop "hardcore repairs" shop charges $15 to revive fried laptop chargers... and a used charger for my HP costs $15 online plus $4 shipping. It's like it isn't even worth purchasing online unless you're buying $2 USB OTG adapters from a big store that can do free shipping. Also: the daughters of the guy that owns the repair shop (and who are the attendants there) were born AFTER Socket 370 and SDRAM became a thing! I've spent half of the weekend explaining to random people that Socket 7s were the ones that we dinosaurs used back when Clinton was still president, and when that 21th Century Socialism™ asswipe was yet to reach the polls.

- Found another seedy repair shop. The place had CRT TVs and monitors (with colder solder joints, natch!) still in use - that should be a good signal that I was at the correct place? Anyway, the guy (a kid slighty younger than me) knew what I was looking for. Paid $5 for 3 random SDRAM sticks as-is, with the hopes that at least I would complete 128MB here. Here are my results:
* HP-branded Samsung PC100 64MB stick (8 chips, single-sided) made in mid '99: works as expected (and this Celery is FSB100, so it's working at its optimal speed). Sadly it won't be of any use here if I ever upgrade to a Pentium III on this thing :/
* Noname "MADE IN USA" 128MB stick (16 chips, dual-sided): no dice. The computer won't even see that the module is installed there! There was some heavy corrosion at some pins, but even after getting rid of as much as that crud as possible, there was no way that this Compaq mobo would even detect the module - for all effects, the MCH was detecting an empty slot.
* Markvision PC133 128MB stick (8 chips, single-sided): Works... kinda? The machine only detects HALF THE RAM (and memtest86+ would gladly give a clean pass to that). How is that even possible??!?!?! Either the label is fake (plausible: back then, Markvision was "cheaper than herpes, lower-than-dumpster-diving tier, GET AIDS INSTEAD!" junk that proliferated at every single corner computer shop), someone switched labels years ago, the module is defective, or there is some incompatibility with this i810-powered box. EDIT: Nailed it! i810E chipset + Compaq world-class pennypinching design = anything over 64MB sticks are a game of Russian Roulette, and you can't go over 512MB if you hit jackpot (even lowly supermarket-special-tier SiS 630 chipsets went beyond the GB, FFS!)

So... uh, yeah. Upgrading RAM on this thing won't be neither easy nor cheap. I've just got Compaq'd, it seems.

But for now, with only 118MB RAM available to OS (even after installing a proper PCI videocard with own memory), at least Saki's brain is back to life... on a completely new, even more terrible body.

The Date Clocks Stopped Forever for a rather legendary no-frills Socket 7 box:
Jun  4 12:32:42 saki named[542]: success resolving 'ocsp.entrust.net/AAAA' (in '.'?) after reducing the advertised EDNS UDP packet size to 512 octets

My room still smells of burnt plastic :/

Oh, the rear USB ports on this Compaq are so flaky they're unusable. At least the front ones are still good... but throwing all of them behind a bandwidth-starved hub chip instead of splurging $0.50 on another USB OHCI controller is so Compaq...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-07, 00:27 in Computer Hardware News
Dinosaur

Post: #1117 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
APPLE!!!

https://news.ycombinator.com/item?id=31644019
https://news.ycombinator.com/item?id=31644008
https://news.ycombinator.com/item?id=31643917

Wasn't iOS supposed to kill the Mac? Or is now the other way around?
Also, you haven't updated your Apple gear yet - go go go!

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-07, 18:58 in Internet numbers bragging thread
Dinosaur

Post: #1118 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
Movistar "4G", right now:


- Download: Marginally better than EDGE (that is, 2G on steroids). Can't even reach good ol' EvDO levels!
- Upload: WTF. Apparently I'm maxing out USB1.1 bandwidth here! Apparently "reverse ADSL" is now a thing?

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Posted on 22-06-08, 19:21 in I have yet to have never seen it all.
Dinosaur

Post: #1119 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
If the kid that runs the repair shop looks younger than you, or if the oldest piece of hardware you can see is attached to a 32" TV, you have no business looking for vintage junk there.

Yes, "Socket 370" is now considered to be vintage, AKA "burn and bury". Even "DDR1" is kryptonite to computer repair shops here! (MercadoLibre seriously needs a "retrocomputing/vintage" category, but they're too busy lumping all HDDs and SSDs on the same sack)

Went to another seedy junkyard (more specialized on ink refills rather than computer repair). The guy had to look hard for one of his RAM stashes, but ended scoring 4 random SDRAM DIMMs for the low price of $FREE (yes, really - "that's all I can do to help you, buddy").

- 256MB PC133 Markvision crapola (double sided): no POST!
- 128MB PC133 noname crapola ("16Mx64", single-sided): works fine! It even recognized the full 128MB on the stick!
- 64MB PC100 noname crapola (single-sided): works fine.
- 32MB NEC made in France with NEC UK chips (HP OEM sticker, 4 chips, single-sided): surprisingly no POST! You rarely discard low-capacity sticks because of failure, but it seems this one was retired due to that.

So: 7 modules, $5 spent, and I'm now at 192MB (180MB usable). Hope that the next junkyard expedition yields better results, but at least progress at last! Maybe that "16Mx64" is the key to something? I need to research more - sounds like the hell of "for Intel only/low density" DDR1 sticks...

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Dinosaur

Post: #1120 of 1318
Since: 10-30-18

Last post: 9 days
Last view: 3 hours
KERNEL HAAAAAXXXX TIME!!!!

Since I'll be confined to craptacular "3G"/"4G" mobile data for the next weeks/months/years, it means repurposing my (new) routerbox for that. I have my scripts for that - just plug any 3G stick, and let good ol' PPP do its miracle. Or since Android phones SUCK and can't give you a honest-to-God modem device anymore (unlike actual dumbphones), it simply involves plugging the phone, enable USB tethering, and enjoy 3 or 4 layers of NAT. Except that this won't fly for my fancy new Xinniephone, as the Redmi Note 11 is juuuuuuust too new for vintage Debian, and you can't really think about upgrading anything without a proper Internet connection.

Cellphones these days get recognized as RNDIS (MS' bastardization of CDC Ethernet device class), and the kernel has been able to deal with those for years, but OEMs always find creative ways to bend the rules: while both my Alcatel and my KrapOS® Blu work fine with rndis_host, the Redmi won't unless you're using a new enough kernel (like the ones on current Debian stable). Since Saki's brains got permafrozen at Debian Jessie, but now on an actual i686 body, maybe I can afford upgrading the kernel over 4G? Well... yes but no: tried pulling the final kernel release from jessie-backports (4.9), but nope, that won't pick the Redmi either - too old! What the fuck is this Xinniephone doing under the hood? lsusb has some answers:

Alcatel OT-5044R that works:
Bus 001 Device 012: ID 1bbb:902d T & A Mobile Phones 
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1bbb T & A Mobile Phones
idProduct 0x902d
bcdDevice 3.10
iManufacturer 1 Alcatel 5044R
iProduct 2 Alcatel 5044R
iSerial 3 940068d5
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 121
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 224 Wireless
bFunctionSubClass 1 Radio Frequency
bFunctionProtocol 3 RNDIS
iFunction 8 RNDIS
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 3 RNDIS
iInterface 6 RNDIS Communications Control
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 7 RNDIS Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 4 ADB Interface
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)


KrapOS® Blu Zoey Smart, that one works too:
Bus 001 Device 016: ID 1782:5d21 Spreadtrum Communications Inc. 
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1782 Spreadtrum Communications Inc.
idProduct 0x5d21
bcdDevice 4.04
iManufacturer 1 Spreadtrum
iProduct 2 Spreadtrum Phone
iSerial 3 2100018020013388
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 282
bNumInterfaces 11
bConfigurationValue 1
iConfiguration 4 rndis_adb
bmAttributes 0xc0
Self Powered
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 224 Wireless
bFunctionSubClass 1 Radio Frequency
bFunctionProtocol 3 RNDIS
iFunction 7 RNDIS
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 3 RNDIS
iInterface 5 RNDIS Communications Control
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 6 RNDIS Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 9 ADB Interface
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 5
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 6
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 7
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x88 EP 8 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x07 EP 7 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 8
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x89 EP 9 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x08 EP 8 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 9
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8a EP 10 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x09 EP 9 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 10
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8b EP 11 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x0a EP 10 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0001
Self Powered


Redmi Note 11, which gets completely ignored by old Debian:
Bus 001 Device 021: ID 2717:ff88 Xiaomi Inc. Mi/Redmi series (RNDIS + ADB)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2717 Xiaomi Inc.
idProduct 0xff88 Mi/Redmi series (RNDIS + ADB)
bcdDevice 4.19
iManufacturer 1 Xiaomi
iProduct 2 Redmi Note 11
iSerial 3 c4ffb459
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 98
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 4 rndis_adb
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 239 Miscellaneous Device
bFunctionSubClass 4
bFunctionProtocol 1
iFunction 7 RNDIS
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 239 Miscellaneous Device
bInterfaceSubClass 4
bInterfaceProtocol 1
iInterface 5 RNDIS Communications Control
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 6 RNDIS Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x8e EP 14 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x0f EP 15 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 66
bInterfaceProtocol 1
iInterface 8 ADB Interface
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 22
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000006
Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000f
Device can operate at Low Speed (1Mbps)
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 1 micro seconds
bU2DevExitLat 500 micro seconds
Device Status: 0x0000
(Bus Powered)


...and now let's take a look at what's rndis_host expecting:

Debian Jessie / kernel 4.9 (backports)
filename:       /lib/modules/4.9.0-0.bpo.12-686/kernel/drivers/net/usb/rndis_host.ko
license: GPL
description: USB Host side RNDIS driver
author: David Brownell
alias: usb:v*p*d*dc*dsc*dp*icE0isc01ip03in*
alias: usb:v*p*d*dc*dsc*dp*icEFisc01ip01in*
alias: usb:v*p*d*dc*dsc*dp*ic02isc02ipFFin*
alias: usb:v1630p0042d*dc*dsc*dp*ic02isc02ipFFin*
depends: usbnet,cdc_ether,usbcore
retpoline: Y
intree: Y
vermagic: 4.9.0-0.bpo.12-686 SMP mod_unload modversions 686


Debian Buster / kernel 5.10 (backports)
filename:       /lib/modules/5.10.0-0.bpo.12-amd64/kernel/drivers/net/usb/rndis_host.ko
license: GPL
description: USB Host side RNDIS driver
author: David Brownell
alias: usb:v*p*d*dc*dsc*dp*icEFisc04ip01in*
alias: usb:v*p*d*dc*dsc*dp*icE0isc01ip03in*
alias: usb:v*p*d*dc*dsc*dp*icEFisc01ip01in*
alias: usb:v*p*d*dc*dsc*dp*ic02isc02ipFFin*
alias: usb:v238Bp*d*dc*dsc*dp*ic02isc02ipFFin*
alias: usb:v1630p0042d*dc*dsc*dp*ic02isc02ipFFin*
depends: usbnet,cdc_ether,usbcore
retpoline: Y
intree: Y
name: rndis_host
vermagic: 5.10.0-0.bpo.12-amd64 SMP mod_unload modversions


Aha! The lists of supported device aliases has increased on newer kernels! And if we map between kernel aliases and USB descriptors, we can get the following:

- Both the Alcatel and the KrapOS' Blu have a interface for Wireless Communications class (E0), subclaas 1 (Radio Frequency), protocol 3 (RNDIS), so in other words, a cellphone sharing its Internets.
- BUT! The Redmi instead believes it's a Miscellaneous Device (EF), subclass 4 (nobody knows), protocol 1 (wtf). Older kernels won't pick those, while newer ones will (usb:v*p*d*dc*dsc*dp*icEFisc04ip01in*).

So you know where this is going down: fire up the hexeditors!
In this case, the change seems to be simple: since I have no device using interface EF/01/01, it should be a simple edit to change that first "01" to a "04", right? And indeed it is: there is a single occurrence for EF0101 near the middle of the compiled module (in my case: offset 0x143D). Just in case, I edited the alias string too, which is quite close (offset 0x174B), saved my hax module, and tried to insmod it (remember to rmmod the distro-supplied one first!).

Plug the phone, enable USB tethering, aaaaand...
[66279.596101] usb 1-1.2: new full-speed USB device number 27 using uhci_hcd
[66279.750806] usb 1-1.2: New USB device found, idVendor=2717, idProduct=ff88
[66279.751299] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[66279.751698] usb 1-1.2: Product: Redmi Note 11
[66279.752131] usb 1-1.2: Manufacturer: Xiaomi
[66279.752422] usb 1-1.2: SerialNumber: c4ffb459
[66279.777438] usb 1-1.2: bad CDC descriptors

Well... at least nothing caught fire TODAY. But apparently there is another roadblock in the way, but who?
The key lies on the module dependencies: usbnet,cdc_ether,usbcore. The "CDC" bit tells that I need to look at cdc_ether, which is the proper standard for USB network interface devices that aren't modems (remember: RNDIS is a bad hack of CDC Ethernet). Fortunately, no serious bandwidth is required to read the kernel sources:
(4.9)
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/usb/rndis_host.c?h=v4.9.317
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/usb/cdc_ether.c?h=v4.9.317
(Latest stable)
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/usb/rndis_host.c
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/usb/cdc_ether.c

And the answer is right in front of our eyes! The "bad CDC descriptors" come from usbnet_generic_cdc_bind, after it fails to match a device with either CDC Ethernet or RNDIS drivers. Even when rndis_host can take the device, cdc_ether must clear it first as a proper RNDIS device, otherwise it will bail out. And here is what this Xinniephone is Doing It Wrong™:
static int is_novatel_rndis(struct usb_interface_descriptor *desc)
{
return (desc->bInterfaceClass == USB_CLASS_MISC &&
desc->bInterfaceSubClass == 4 &&
desc->bInterfaceProtocol == 1);
}


}, {
/* Novatel Verizon USB730L */
USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
.driver_info = (unsigned long) &rndis_info,
},

So yeah, our shitty Chinazi phone is pretending to be... a datacard. WHY WHY WHY WHY!?!??!?!
Hacking this one out got more involved, as I had to bring bigger guns into this struggle: enter the dissasembler!
Long short story: knowing just a bit of ugly x86 assembly language can be a lifesaver. Compiler optimizations on the other side will lead you to instadeath if you aren't careful. There is no magic "EF0101" number to patch out, instead we end at this:
 613:    e8 fc ff ff ff          call   614 <usbnet_generic_cdc_bind+0x504>
618: e9 5d fe ff ff jmp 47a <usbnet_generic_cdc_bind+0x36a>
61d: 8d 76 00 lea 0x0(%esi),%esi
620: 80 78 06 01 cmpb $0x1,0x6(%eax)
624: 0f 85 75 fb ff ff jne 19f <usbnet_generic_cdc_bind+0x8f>
62a: 80 78 07 01 cmpb $0x1,0x7(%eax)
62e: 0f 85 6b fb ff ff jne 19f <usbnet_generic_cdc_bind+0x8f>
634: 8b 4c 24 24 mov 0x24(%esp),%ecx
638: 8d 44 24 2c lea 0x2c(%esp),%eax


Punch in "80780601" on the hexeditor, we get two matches. But we want the one that goes with "80780701", so the magic one-byte patch (01->04) I had to do was exactly at offset 0x0683! Save, clean, insmod, try again:

[69235.172086] usb 1-1.2: new full-speed USB device number 32 using uhci_hcd
[69235.331456] usb 1-1.2: New USB device found, idVendor=2717, idProduct=ff88
[69235.331948] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[69235.332494] usb 1-1.2: Product: Redmi Note 11
[69235.332801] usb 1-1.2: Manufacturer: Xiaomi
[69235.333063] usb 1-1.2: SerialNumber: c4ffb459
[69235.476808] rndis_host 1-1.2:1.0 usb0: register 'rndis_host' at usb-0000:00:1f.2-1.2, RNDIS device (poll status before control), 4a:2a:60:xx:xx:xx


KERNALITY!

All I have now to do is to enjoy my 1GB of "worse than GPRS" LTE data--- wait, wtf is DNS not working?! But I can ping IP addresses!? Ah, Digitel, hope you choke with that Big Red Commie schlong (for whatever reason, they block every single DNS server except for Google's 8.8.8.8 -and only .8.8, .4.4 is blocked-, maybe to not break Android), so after disabling all forwarders but 8.8.8.8 on BIND, I'm back to business... kinda.

tl;dr: better dust off the CANTV Mafia™ phone numbers?

Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    Main » tomman » List of posts
    Get an ad blocker.