Sunday, October 25, 2020

How to Install Windows 10 from UEFI Secure Boot using a Bootable USB (2020 and newer version)

Since version 1903 of Windows 10, the ISO images available on MSDN contain install.wim image which is larger than 4GiB file size limit of FAT32 partition. Secure boot does not boot from NTFS-formatted USB sticks, which leads to a problem where its not possible to install Windows in UEFI/secure boot mode.

The solution to this problem is to create 2 partitions, FAT32 for hosting just the boot files, and a larger NTFS for hosting the rest of installer image.

Step by step instructions

Step 1: Create and format partitions

Right click Windows logo, click Command Prompt (Admin).
Enter diskpart.exe, press Enter. The following commands all occur at the "DISKPART>" prompt. After listing disks, make a note of the disk number which matches inserted USB stick (based on size/etc). Use that number in "select disk" command below.

list disk
select disk 1 

(Where 1 is the disk number for USB stick. Usual warnings about not being an idiot apply.)

clean
create partition primary size=1024
select partition 1
active
format quick fs=fat32
assign
create partition primary
select partition 2
format quick fs=ntfs
assign
exit

Remain in the admin command prompt for the following step.

Step 2: Copy boot and installer files

Double click on the ISO file of Windows 10, version 2004 (or newer) to create a virtual drive. Note the drive letter this creates. Enter the following commands, replacing drive letters as required.

xcopy f:\sources\boot.wim d:\sources\ /s /e 

where
f: the virtual drive and
d: the USB fat32 partition.
We copy only the f:\sources\boot.wim file to d:\sources\.

robocopy f:\ d:\ /IS /S /XD sources 

where 
f: the virtual drive and 
d: the USB fat32 partition.
We copy everything from f:\ to d:\ except the sources folder.
xcopy f:* e:\ /s /e 

where 
f: the virtual drive and 
e: the USB NTFS partition.

Final notes

That's it! Close command prompt, eject USB, and reboot (or take the stick to whatever machine you will be installing).

Saturday, July 23, 2016

Fixing stuck touchpad on Toshiba Satellite Radius 12 P25W-C2300-4K

When I bought this laptop in late 2015, first thing I stopped using was touchpad. It would randomly stop moving the cursor, not register clicks, just get stuck for apparently no reason and in general work erratically. Shrugging it off as typical modern garbage (there hasn't been a laptop in last 10+ years that I used where touchpad wasn't completely awful), I got an external Logitech mouse and stopped caring. Recently decided to try and figure it out as I've been traveling a lot and using external mouse while sitting at airport or while driving is extremely annoying.

So after some Google searches, it seems that this is a very common problem on this machine - there are literally thousands of posts all over bitching about the problem, having to send laptop back to Toshiba for repair - and it coming back with the problem still present. Great. Then I came across this thread on tomsguide, which pointed out that there was about 20-25 Ohm resistance between system ground and touchpad ground.

From the pics and discussion, it appears the conductive tape which was supposed to bridge touchpad ground with the rest of the system was either not conductive enough, or the glue used was not conductive - resulting in quite a resistive path. Touchpads, their nature being based on capacitance between finger / pad / ground, do not work very well in such conditions.

To get inside the laptop is quite simple. There's around 10 screws on the bottom, shown here by laptopmedia. Once those are out, carefully snap apart plastic clips near the bottom, loosening the back shell. See the laptopmedia link for pics - its pretty simple. After the back shell is gone, the battery is screwed in place by 5 screws. For some reason, #1 screw on mine was not there. Underpaid factory worker forgot to put it in? Anyway, unscrew those in order and the battery comes right off. There's a ~7 pin battery connector on the right side, the battery can be pulled out and put away for the time being to avoid shorting something.

Next, having seen some of the repair pics on the thread, I decided to find a better solution. Since I needed to remove the battery to access touchpad, I decided running a wire under the battery was not a good idea. Instead, I noticed there was a nice ground pad on the left side, next to SSD (top-most circle in the picture). I used some 24AWG flexible silicone wire to do the job. Feed the wire under the SSD, then make a small notch in the plastic in the 2nd circled area - this will allow the wire to be flat with the battery surface later on. I used kapton tape (yellow stuff in the pic) to fix the wire in place, while routing it between grooves in the plastic. Near the 3rd circle, I just bent the wire and fixed it in place with more kapton tape. Finally, the ground attachment on touchpad PCB itself - the 4th and final circle - was to a pad labeled "3", which was connected to ground pour on the PCB. For some reason, measuring resistance between that point, the gold ring around touchpad (visible through the plastic around the touchpad perimeter, and the metal frame surrounding the touchpad was still around 23 Ohm - which makes me think there was another blob of half-conducting tape below the plastic. So instead of soldering to the metal frame (you can see my 1st attempt near the final circle), I decided to solder it to the "3" ground pad directly on PCB. That was easy, I closed up the laptop, and touchpad is working exactly as it should be, including multitouch gestures and other things I thought were just broken due to Toshiba cheaping out on some 3rd world touchpad controller or something.

With the touchpad fixed - this is a great laptop - 4K 12.5" is awesome. One minor annoyance - USB-C port does NOT support DisplayPort alternate mode. A bummer if you wanna connect external 4K monitor.

Wednesday, November 12, 2014

iPad mini 2 retina LCD to DisplayPort adapter

UPDATE 2015/04/12 These are now available in my RC junk shoppe.

Been meaning to innovate this one for a while, but nobody had datasheet for the board to board connector that the 7.9" iPad mini 2 (2048x1536 retina) LCD used. Finally caved in and bought some from a random Chinashop (about $80 shipped for MOQ, ugh), scanned them, used amazing augenmass tool to calculate dimensions, and made a PCB hoping it would work.

Keen arduino developers will notice there's some extra circuitry which will be a subject of a separate post, however it does appear to function after some quick testing.

I basically copypasted the circuit from the other adapter, removed one of the backlight drivers (this panel only needed 6 channels), added a little innovation, and routed it all within a few hours, because I had some free space on a FR4 panel that I could add a couple boards to. For some reason LCD module wanted to be running at 3.6-3.7V instead of 3.3V, so I gave it that.

Assembly was pretty uneventful, and the annoying fine-pitch FPC connector actually matched my "guessed" footprint and soldered correctly. The board powered up on the first try, and nothing seems broken so far. Current draw at full brightness is a nice 510mA.

I used MicroUSB for power this time (again with external 5V on pads if needed), and the same huge full-size DP connector. All my attempts to source a decent MiniDP connector that wasn't a complete pain in the ass to solder didn't end well. I got some samples that were half-smt half-through-hole but there was about 3 or 4 different vendors for those and each one had slightly different layout for mounting pegs, and I didn't have time to sample them all to find out which one was the most commonly used. Molex also has a all-through-hole one, but it didn't seem to be very available either. So, big size DP for this one.

I quickly ported the firmware from the other displayport adapter to run on new board, so it basically has the same functionality. On the new PCB I added a pad for the button signal so that the power/control button can be placed outside a case or similar, if required.

Here's some pics of first finished board (I only made one).
Full-resolution pics are in picasa album here.

Close-up pic. See if you can spot the innovation.

I should have probably taken a pic next to my phone for size comparison, but this credit-card sized thing will do instead.
My pal told me I should have drawn a dickbutt on it with marker, but it's too late. Missed opportunity. Maybe I'll do it for the kickstarter promo video.

Backlight + power ON. The board fits behind the LCD, and with default landscape orientation, USB + DP connector are on the top.

Backlight off, "standby"

Drawing a cool 510mA at 5V

This looks pretty small compared to my two Dell UP2414Q
No promises on availability, but I might make more than one at some point.

Friday, October 24, 2014

Chromebook Pixel 2560x1700 LCD to DisplayPort Adapter

This is a project I've been dicking around with on and off for over a year. I bought the panel shortly after they became available (which is probably around the time Chromebook Pixel was released), and made a few prototypes in my (very limited) free time that didn't work for one reason or another.

First two prototypes I made the mistake of making them double sided, not realizing just how fucking annoying it is to solder 0.4mm pitch connectors on the back of already populated PCB. First one I used TI's TPS series of WLED drivers, which didn't work as good as I expected, so I scrapped that one. Second one I switched to ROHM driver, which worked better, but I hooked it up wrong, which didn't allow me to bring drive voltage above 5.5V making the panel pretty useless brightness-wise. Finally the third one, I redid the layout so that it was all on one side, making much easier to assemble and to reduce potential fuckups from having to bake the board twice.

The end result is pretty nice, though I'm fairly happy with my 4K Dells at this point.

As usual, high resolution photos are in the Google Picasa album:

https://plus.google.com/photos/101126269564358156827/albums/6073976289400453185?authkey=CI_pmIrn29f0Uw

Thumbnails below (maybe click to embiggen works)
Windows 8.1 monitor control panel with Chromebook LCD below dual 4K Dells

The board itself. Surely didn't cost me anywhere near $130 even if I was going to assemble only one.

Another look at the board.

rev2 prototype with ROHM driver. Failed.

rev1 prototype with TPS driver. Failed for some reason I can't remember.

Yes, 2560x1700 in ~12 inch. Very nice.
The Chromebook Pixel panels are available on eBay for as low as 70$-80$ shipped. Unlike the iPad 3/4 panel, it does not come with a fpc/microcoaxial cable for connecting to the driver board. I ordered 5 samples from nice folks I've dealt with before for cables, and it cost me $100 shipped for 5 - which is a bit high, but would probably become cheaper if I was going to get more of them.

Wednesday, October 1, 2014

Dell UltraSharp 24 Ultra HD Monitor UP2414Q Teardown

I ordered UP2414Q as soon as it was available because I wanted to replace my aging Samsung 2343BW pair with something that sucked less.

The hardware (panel) is great, but Dell's logic board and its firmware are garbage.
There are a bunch of threads with raged users complaining about 'wake up from standby' issue:
etc etc, the list is pretty much endless.

For the last few months, I've taken a pic of the screen every time it fucks up. Which is almost daily. Usual modes of fuckup are, from most common to most rare:

  1. Entire screen just doesn't wake up. Power button keeps pulsing.
  2. Half the screen wakes up, leaving a black tile (usually left one).
  3. Entire screen wakes up, but right-side tile is zoomed/shifted by about 100-200 pixels.
  4. Entire  screen wakes up, but right tile has some bars across it, very faint but visible if looked carefully.
  5. Entire screen wakes up, but left-side tile is showing rainbow-like distortion that changes if the image on that side changes.

The above behavior is pretty random, though I've noticed if the monitor is cold (i.e. morning after being in standby for a while), chances of something screwing up are higher. Also, unlike every monitor I've ever owned to date, powering off also disconnects from DisplayPort link - causing Windows to renumerate monitors and rearrange all open apps/windows on a monitor that's still "connected". Really fucking annoying.

Due to the way Dell designed the logic board, firmware update is impossible, so these (believed to be a combination of firmware and hardware issues) aren't going to be fixed. There are reports of A01 or A02 hardware revision (all 3 of mine are A00) supposedly working better, but the only way to get them if you already own A00 is to send the whole monitor back to dell, and get a refubrished A01 or A02 replacement. And even then you can't specify "I want A01", so you may as well get back A00 again. WTF.

Anyway, since the power/wake up problems appeared, people started raging and prices have been dropping. My first one cost me around $1000 shipped, second one, $900, and I have been watching http://www.ebay.com/itm/141339024014 for a while, so when it sat around at $495 + $70-ish to ship it to me, I thought, why not?

So when the 3rd one arrived, I didn't have any immediate use for it (my desktop bluescreens when I connect 3rd 4K screen to it, either on NVidia NVS510 or intel onboard gfx), so I thought I'll take it apart first and take some pics,  since there seemed to be a lack of those on the internets.

I had a pretty good idea of what was going to be inside the monitor - the current selection of 4K driving monitor SoCs is... rather limited, so I've expected this to use STMicroelectronics MegaChips (more on this later) STDP9320 "Athena" monitor controllers. What I did NOT expect however was 3 of them - I'm sure Dell engineers had good reasons to convert HDMI to eDP using another Athena driver, but I can't fucking imagine why. Just using STDP2600 to convert HDMI 1.4 to eDP would make more sense, be a single chip solution, and still allow switching inputs in exactly same way as now. Then they would feed output of STDP2600 into pair of Athena drivers as it is done now, and call it a day.

On to the teardown pics. Again, I have no idea how to link this shit to the blog directly, so I've uploaded them all in google photos here:

Roughly each step of the process is below, with comments in picture captions. Sorry for shitty pics, at least they were not taken with iPhone 6.  Hirespics are in Google photos at the link above.
First, start with the back panel. Remove 4 screws inside the VESA mount. Then use plastic pry tool to remove front (black) bezel. At t his point, back side can be just lifted off.

Back cover half-removed - USB 3 port mounted inside the back cover prevents it from fully coming off.

Back panel completely removed, USB port separated. It just snaps in place with some plastic standoffs and cable is held by a piece of electrical tape (no kidding).

Logic board mounted upside down inside metal cage. Bottom has 4 LVDS connectors to the panel, and left side can see one of the two gray cables for backlight. Screw in the center of the logic board - the one directly below the SMT sticker and 2 circular markings was NOT fully screwed in on the monitor I took apart. It was in about half way, and I could twist it by hand without even using a screwdriver. No idea what's going on here.

First WTF on the board. HDMI is connected to STDP9320 Monitor SoC and outputs LVDS.

... Which then goes to STDP4028 which is a LVTTL/LVDS to eDP 1.2 transmitter, output of that goes to the tile drivers. 
This is what I expected. I knew Athena SoC could be cascaded to deal with tiled 4K screens. Copy paste one layout, declare victory. Wait, not so fast. ST reference firmware fucking sucks.

Overall logic board layout. Dell could have reduced the BOM cost by over 1/3 simply by dumping bottom left STDP9320 and STDP4028 next to it and replacing with a single STDP2600. I'm sure they had their reasons tho... or did they?

Switching between DP and MiniDP is done with this little thing, its just a 2:1 mux/demux thing in standard rectangular QFN package. 

There's a couple USB3.0 hubs to deal with 4 USB3.0 ports on the back and card reader.

The other hub. Boring.

Boring Realtek USB3.0 card reader. Actually, the speed isn't bad. But don't worry, you won't be able to upgrade monitor firmware by plugging any SD cards here. Nope.

One of DDR SDRAM chips for the Athena SoC and a peek at one of the 10bit LVDS cables.

Another LVDS, each tile needs two of them (total 4 channels)

Back of the board, maybe someone can google that part # and find a service manual some day.

SMT sticker from the front. Nothing of value here, probably.

Back side of one of the STDP9320 parts. The layout of passives is identical.

Back side of one of the STDP9320 parts. The layout of passives is identical.

Here's the second WTF. There's a fucking PIC16 or PIC18 or something similar (I was too lazy to check the part#) on the board. What is it for? I'm gonna take a wild guess that it's probably for the menu buttons + awful fading power button LED.

As I expected (and downloaded datasheet of), this is the panel that's used. LM238WR1 (SL) (A1) by LG Display. Actually that thing showed up on their product road map back in late 2012/early 2013. So there's nothing unexpected here. What's kinda unexpected is it being a 10bit LVDS panel, and not eDP (what I would like) or VbyOne (some proprietary crap by another Japanese company with NIH syndrome).

So, basically Dell UP2414Q is a 100% STMicro design, and I suspect the actual schematics might be more or less identical to an Athena 4K reference board that I've seen at the office before.  There are some oddities (with HDMI input) that puzzle me as to why things were done this way, but overall, with currently available monitor SoCs, this is the only way to make this work.

60Hz over HDMI: Not happening on this board. Just not possible. Firmware update or not. Fixing standby/resume wake up issues: Reported to have been fixed in A01 revision, whether its 100% software or 50/50 hardware/software is unknown. All my monitors are A00, so I've got nothing to compare with. Firmware update for A00 users, if the fix is 100% software: No fucking way. Each STDP9320 has SPI eeprom attached to it, so you'd need to be able to upgrade all 3 somehow. There are also tons of debug UART connectors everywhere, seems each STDP has at least a couple of them, plus few more in other places. There's probably STDP debug boot messages outputting to there, but without proper docs (see below), poking at that debug stuff is going to be a waste of time.

Now, earlier, I crossed out STMicroelectronics and mentioned MegaChips corporation. Why? Well, you won't be able to find any info on this on the internets, but my STMicro contact informed me that as of September 2014, STMicro has transferred "all their DisplayPort-related IP" to MegaChips corporation. This includes all the chips in STDP series, HDMI>DisplayPort, DisplayPort>HDMI, Monitor SoCs, Scalers, etc. My guess is, since none of these were originally ST chips anyway - most of them were acquired from Faroudja and some other semiconductor company I forgot - and ST didn't wanna deal with support, so they sold it off. However they couldn't have picked a worse company to sell it to. MegaChips (http://www.megachips.co.jp/english/index.html) is a Japanese company. As such, they're complete cunts. Trying to work with any Japanese company is a waste of time. They basically do not want your business. So as  far as I'm concerned, the entire STDP product line is now dead and discontinued. Did I mention Japanese corporations are cunts? I'll do it again.

Realtek is going to start sampling their proper 4K2K SoC soon - RTD2796. This one supports HDMI 2.0, DP 1.2 HBR+HBR2, MST, SST, and has flexible panel outputs - 8 channels of LVDS, VbyOne, eDP, etc etc. Basically a one-chip solution to 4K monitor problem and really the only choice now that STDP series are gone.

Saturday, July 20, 2013

LP097QX1-SPA2 (iPad 3/4 LCD panel) teardown

Since I started making 2048x1536 LCD adapter boards, I have to test each one to make sure its working before sending out. One of the boards, the FPC connector wasn't aligned correctly during placement and during reflow it jumped one pin over. I didn't notice that and plugged stuff in, smoking the backlight traces and shorting panel VCC. I've always wanted to see what makes the panel tick, so I decided to take it apart. Results below.
Full-size pictures are in Picasa album, I can't figure out how to link them directly:
https://plus.google.com/photos/101126269564358156827/albums/5902905573913211249?authkey=CKvhvc_p5bjewQE


Obviously  working panel
Shields removed
A - EDID eeprom
B - ParadeTech DP635 T-CON
C - Couple DC/DC converters
D - Unknown use i7990 chip
E - Hiding behind metal shield is A2=EE chip
F - Backlight connector
EDID eeprom access, maybe someone wants to change "Color LCD" monitor text
Backlight strips, one on top one on bottom of panel
A - 3A, 32V Fuse
B - Backlight connectors, Hirose
Some stickers on backlight Wooree LED
Unknown A2=EE R1R chip hiding under the metal shield. Certainly looks like a DC/DC converter because of nearby coils but there's already 2 of those near the center of the board... Could be custom Apple or LG junk.
For those who are thinking of using this panel for a DIY projector - with a lot of careful peeling, its relatively easy to extract the panel and driver board from its casing and disconnect backlight. After I noticed the connector was off by one (and of course after I thoroughly disassembled the panel), I decided to hook it up to a working driver board, and to my surprise, it actually worked: http://i.imgur.com/mU6JR2c.jpg

Wednesday, April 24, 2013

iPad 3 retina display adapter to DisplayPort

I made this sometime last year but was too lazy to do anything with it.

UPDATE 12/24/2013 These are more or less regularly available in my rc junk shoppe. When not in stock, I'm either out of parts, or waiting for parts, or too lazy to make more.

It allows connecting LG's LP097QX1-SPA1 (or Samsung equivalent LTL097QL01-W01) to any PC/Mac with Displayport. I also prototyped a HDMI version (using HDMI>DP chipset) but it was huge (the chips involved are like 200+pins tqfp) and I don't really care about HDMI. Also HDMI would need v1.3 transmitter to do over 1080p and some cheap trash sources (LIKE EVERYONES FAVORITE HYPEBERRY PI) probably can't even do that. So sorry, no 2k screens on your $30 Lunix trash. It is USB bus powered (out of spec), drawing something like 800mA. This hasn't stopped anyone else from making stuff drawing ~1A from USB so I don't think this is an issue.

I got a bunch of unpopulated boards left over and firmware is half-assed - but with STM32F103CB on there, it can do pretty much whatever, including brightness control over USB, soft power on/off (panel logic/backlight power is separate switching regulators from MCU), or whatever. I have no interest in touchpanels or anything tablet related, so this is not something I would ever consider.

The board is made to be mounted with top-activated or side-activated pushbuttons (top-activated would be mounted behind the board) and is made so it ends up in upper right corner of the LCD panel, with both buttons and DP/USB connectors slightly behind the bezel. I was going to make a milled aluminum case and properly mount the board but got too lazy and didn't even get that far. So I just have the bezel and adapter sitting behind it.

It enumerates on PC as "Apple Color LCD" for EDID, and supports 2048x1536 @ 60Hz. With my HDMI prototype, I was able to set up EDIDs so that it properly centered 1080p stuff with black borders, or stretched it to 2048xwhatever (with black borders on top/bottom). Also note, eDP in this panel does NOT support HDCP. It did support HDCP when doing HDMI>DP conversion.
 

If people want these, drop me a note, if there's enough interest I'll assemble some.
Preference given to people who want these because of STM32 on the board and not the usual tarduino code copypasters.