Tuesday 15 December 2015

Two external screens on a Microsoft Surface Pro 4

I could not get more than one external screen on a Surface Pro 4 to work. The docking-brick has two mini-display ports, there is one display port on the side of the tablet. But regardless of the combination, more than one screen wouldn't work.
That was with the usual "right click on desktop" mehtod to get access to the screen properties.
The only option there was to duplicate the screen to one of the external monitors.

All screens show up ok in the device manager. But in the win10 screen settings ony the main screen appeared, along with an option to duplicate the output to screen 2 or 3. Rather pointless in this scenario.

All screens working ok now
Solution:
Go to the traditional control panel and find the settings for screen resolution there.
The two external screens shown in black.
The external screens are show as "disconnected"

They look normal when the Desktop has been extended to use these screens. This has to be done for both external screens.
Then you can arrange them as needed:
Three screens in different orientations
These settings do survive a reboot, but may be destroyed when using the Win10-style screen settings window.

EDIT: 2015/12/17 This issue appears to be resolved in the build 1511.

EDIT: 2016/01/08 With three active screens, windows does not seem to store the screen settings. The two external screens are recognized, but not used.
As a workaround, we disable the Surface 4's own screen. That seems to result inm a stable configuration. When undocked, the internal screen can be used as usual without intervention.

Friday 11 December 2015

Installing sound drivers on the Microsoft Surface 4 Pro from the command line

The SCCM Win10 OS deployment for our brand new Surface 4 pro PCs refused to find the drivers for the Realtek audio drivers through windows update.

The drivers can be downloaded (at the time of writing) here.

After a lot of attempts with the deprecated rundll32 setupapi method, we found that the following method worked:

 c:\temp\SmartSoundOED>pnputil -i -a IntcOED.inf  
 Microsoft-PnP-Hilfsprogramm  
 Verarbeitungsinf.:      IntcOED.inf  
 Der Treiber konnte auf einem Gerät dieses Systems installiert werden.  
 Das Treiberpaket wurde erfolgreich hinzugefügt.  
 Veröffentlichter Name:      oem46.inf  
 Versuche gesamt:       1  
 Anzahl erfolgreicher Importe: 1  
 c:\temp\SmartSoundOED>  

Same thing with the HDXSSTM.inf file from the HDAudio directory.
So on our SCCM server, we added a package and a task in the task sequence to run pnputil for the two drivers.

Thursday 10 December 2015

Espressif ESP-8266: minimal configuration for running the ESP-12e module

I am working on a project where I haven't quite decided on some of the details, so I wanted a module that breaks out a lot of the ESP8266's pins, just to have as many options available as possible.

Here is also a 5 minute video about it.

The ESP-12e module seems like a good choice, with the added benefit of having 4MBytes of flash memory.
ESP-12e module from Banggod
So I ordered a pack of three from Bangood for just under 8 Euros. After quite a long wait they arrived and I had to take them to the workbench for a quick test drive, right away.

Odd stuff

A few things are a bit odd about these modules:
  • The silkscreen is a very poor print quality
  • The ADC pin is labelled ADG
  • The GPIO labels are a mess. Eg: There is no GPIO0 (this is labelled GPIO6 instead)

Where's GPOI0?
Todo: try flashing LEDs on all GPIOs to compare against NodeMCUs IO table


Basic configuration

So after a little experimentation, this turned out the most basic configuration:
Basic config for ESP-12e
I plan to run this without a circuit board, so I'll simply shorten GPOI15 to ground and connect the "Chip Power Down" Pin (CH_PD) to 3.3V. 

The Module came preinstalled with some AT-firmware, I didn't much care about.

Flashing new firmware

To program new firmware, GPOI0 (which for some reason is GPIO6 here) needs to be connected to ground. I am a huge fan of NodeMCU, so I flashed that to the module.
Ground GPIO6 (=GPIO0) to flash firmware via UART

This goes without saying

Connecting the serial-usb converter is unspectacular. Just the usual RXD-TXD / TXD-RXD thing. And don't forget to connect the ground wires.
Connecting the USB2Serial converter