From 691b949822ba89478e710fec7623817878ece06d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Mon, 27 Nov 2023 12:48:39 +0100 Subject: [PATCH 1/4] docs/transparent-validation: Move sonoff preparation to common file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Żygowski --- .../msi-z690/laboratory-assembly-guide.md | 135 +---------------- .../msi-z790/laboratory-assembly-guide.md | 135 +---------------- .../images/sonoff-s20-uart.jpg | Bin .../images/sonoff_with_header.jpg | Bin .../images/sonoff_without_header.jpg | Bin .../sonoff/sonoff_preparation.md | 137 ++++++++++++++++++ mkdocs.yml | 2 + 7 files changed, 141 insertions(+), 268 deletions(-) rename docs/transparent-validation/{msi-z690 => sonoff}/images/sonoff-s20-uart.jpg (100%) rename docs/transparent-validation/{msi-z690 => sonoff}/images/sonoff_with_header.jpg (100%) rename docs/transparent-validation/{msi-z690 => sonoff}/images/sonoff_without_header.jpg (100%) create mode 100644 docs/transparent-validation/sonoff/sonoff_preparation.md diff --git a/docs/transparent-validation/msi-z690/laboratory-assembly-guide.md b/docs/transparent-validation/msi-z690/laboratory-assembly-guide.md index 9457701967..9fd825c0ce 100644 --- a/docs/transparent-validation/msi-z690/laboratory-assembly-guide.md +++ b/docs/transparent-validation/msi-z690/laboratory-assembly-guide.md @@ -37,140 +37,7 @@ to the device. ### Sonoff -The below section of the documentation is based on the -[EPSHome documentation](https://esphome.io/devices/sonoff_s20.html) - -1. Open the Sonoff case. - -1. Check if the headers are soldered to the board. If not - 4 pin header - raster 2.54 mm should be soldered to the board in accordance with the below - images. - - ![sonoff_without_header](images/sonoff_without_header.jpg) - - ![sonoff_with_header](images/sonoff_with_header.jpg) - -1. Connect the USB-UART converter to the USB port. - - ![uart connection](images/sonoff-s20-uart.jpg) - -1. Create a Sonoff configuration file. The file extension should be `.yaml` and - it should contain the device configuration. - - Example configuration: - - ```yml - esphome: - name: XXXXXX - platform: ESP8266 - board: esp01_1m - - wifi: - ssid: "XXXXXX" - password: "XXXXXX" - # manual_ip: - # # Set this to the IP of the ESP - # static_ip: 192.168.4.187 - # # Set this to the IP address of the router. Often ends with .1 - # gateway: 192.168.4.1 - # # The subnet of the network. 255.255.255.0 works for most home networks. - # subnet: 255.255.255.0 - power_save_mode: none - - - # # Enable fallback hotspot (captive portal) in case wifi connection fails - ap: - ssid: "Sonoff1 Fallback Hotspot" - password: "123456789" - - - captive_portal: - - # Enable logging - logger: - - # Enable Home Assistant API - api: - - - ota: - - - binary_sensor: - - platform: gpio - pin: - number: GPIO0 - mode: INPUT_PULLUP - inverted: True - name: "Sonoff S20 Button" - on_press: - - switch.toggle: relay - - platform: status - name: "Sonoff S20 Status" - - - switch: - - platform: gpio - name: "Sonoff S20 Relay" - pin: GPIO12 - id: relay - - output: - - platform: esp8266_pwm - id: s20_green_led - pin: GPIO13 - inverted: True - - light: - - platform: monochromatic - name: "Sonoff S20 Green LED" - output: s20_green_led - - web_server: - port: 80 - reboot_timeout: 0s - ``` - -1. Run the docker container in the folder containing created `.yaml` - configuration file: - - ```sh - docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -p 6052:6052 -it esphome/esphome - ``` - -1. Open the browser and type into the web browser the following address: - - ```bash - http://localhost:6052/ - ``` - -1. Put the device in flash mode. Putting the device in this mode should be done - in accordance with the - [documentation](https://esphome.io/devices/sonoff_s20.html#step-4-uploading-firmware). -1. Change the upload method from OTA to `/dev/ttyUSB0`. After this operation, - the new element with the name specified in `esphome:name` should be - displayed. - -1. Select the option `Upload`. After clicking, the program should generate - the image, compile it and upload it to the device. -1. After successful upload replug the device to the USB (**without** the button - pressed) to get out of the flashing mode. - -1. Open connection to the device in the PC terminal by typing: - - ```bash - sudo minicom -D /dev/ttyUSB0 -o -b 115200. - ``` - - > Note: `/dev/ttyUSB0` is example device - check whether `USB0` is the - correct one. - -1. Check if the device is responsible - whether network connectivity - information is generated. - - > Note: The effective range for this device is only a few meters. - -1. Based on the minicom logs read the IP address assigned to the device. +Prepare Sonoff according to [Sonoff preparation instructions](../sonoff/sonoff_preparation.md) ## Connections diff --git a/docs/transparent-validation/msi-z790/laboratory-assembly-guide.md b/docs/transparent-validation/msi-z790/laboratory-assembly-guide.md index 45c8078e0d..797267b20b 100644 --- a/docs/transparent-validation/msi-z790/laboratory-assembly-guide.md +++ b/docs/transparent-validation/msi-z790/laboratory-assembly-guide.md @@ -37,140 +37,7 @@ to the device. ### Sonoff -The below section of the documentation is based on the -[EPSHome documentation](https://esphome.io/devices/sonoff_s20.html) - -1. Open the Sonoff case. - -1. Check if the headers are soldered to the board. If not - 4 pin header - raster 2.54 mm should be soldered to the board in accordance with the below - images. - - ![sonoff_without_header](../msi-z690/images/sonoff_without_header.jpg) - - ![sonoff_with_header](../msi-z690/images/sonoff_with_header.jpg) - -1. Connect the USB-UART converter to the USB port. - - ![uart connection](../msi-z690/images/sonoff-s20-uart.jpg) - -1. Create a Sonoff configuration file. The file extension should be `.yaml` and - it should contain the device configuration. - - Example configuration: - - ```yml - esphome: - name: XXXXXX - platform: ESP8266 - board: esp01_1m - - wifi: - ssid: "XXXXXX" - password: "XXXXXX" - # manual_ip: - # # Set this to the IP of the ESP - # static_ip: 192.168.4.187 - # # Set this to the IP address of the router. Often ends with .1 - # gateway: 192.168.4.1 - # # The subnet of the network. 255.255.255.0 works for most home networks. - # subnet: 255.255.255.0 - power_save_mode: none - - - # # Enable fallback hotspot (captive portal) in case wifi connection fails - ap: - ssid: "Sonoff1 Fallback Hotspot" - password: "123456789" - - - captive_portal: - - # Enable logging - logger: - - # Enable Home Assistant API - api: - - - ota: - - - binary_sensor: - - platform: gpio - pin: - number: GPIO0 - mode: INPUT_PULLUP - inverted: True - name: "Sonoff S20 Button" - on_press: - - switch.toggle: relay - - platform: status - name: "Sonoff S20 Status" - - - switch: - - platform: gpio - name: "Sonoff S20 Relay" - pin: GPIO12 - id: relay - - output: - - platform: esp8266_pwm - id: s20_green_led - pin: GPIO13 - inverted: True - - light: - - platform: monochromatic - name: "Sonoff S20 Green LED" - output: s20_green_led - - web_server: - port: 80 - reboot_timeout: 0s - ``` - -1. Run the docker container in the folder containing created `.yaml` - configuration file: - - ```sh - docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -p 6052:6052 -it esphome/esphome - ``` - -1. Open the browser and type into the web browser the following address: - - ```bash - http://localhost:6052/ - ``` - -1. Put the device in flash mode. Putting the device in this mode should be done - in accordance with the - [documentation](https://esphome.io/devices/sonoff_s20.html#step-4-uploading-firmware). -1. Change the upload method from OTA to `/dev/ttyUSB0`. After this operation, - the new element with the name specified in `esphome:name` should be - displayed. - -1. Select the option `Upload`. After clicking, the program should generate - the image, compile it and upload it to the device. -1. After successful upload replug the device to the USB (**without** the button - pressed) to get out of the flashing mode. - -1. Open connection to the device in the PC terminal by typing: - - ```bash - sudo minicom -D /dev/ttyUSB0 -o -b 115200. - ``` - - > Note: `/dev/ttyUSB0` is example device - check whether `USB0` is the - correct one. - -1. Check if the device is responsible - whether network connectivity - information is generated. - - > Note: The effective range for this device is only a few meters. - -1. Based on the minicom logs read the IP address assigned to the device. +Prepare Sonoff according to [Sonoff preparation instructions](../sonoff/sonoff_preparation.md) ## Connections diff --git a/docs/transparent-validation/msi-z690/images/sonoff-s20-uart.jpg b/docs/transparent-validation/sonoff/images/sonoff-s20-uart.jpg similarity index 100% rename from docs/transparent-validation/msi-z690/images/sonoff-s20-uart.jpg rename to docs/transparent-validation/sonoff/images/sonoff-s20-uart.jpg diff --git a/docs/transparent-validation/msi-z690/images/sonoff_with_header.jpg b/docs/transparent-validation/sonoff/images/sonoff_with_header.jpg similarity index 100% rename from docs/transparent-validation/msi-z690/images/sonoff_with_header.jpg rename to docs/transparent-validation/sonoff/images/sonoff_with_header.jpg diff --git a/docs/transparent-validation/msi-z690/images/sonoff_without_header.jpg b/docs/transparent-validation/sonoff/images/sonoff_without_header.jpg similarity index 100% rename from docs/transparent-validation/msi-z690/images/sonoff_without_header.jpg rename to docs/transparent-validation/sonoff/images/sonoff_without_header.jpg diff --git a/docs/transparent-validation/sonoff/sonoff_preparation.md b/docs/transparent-validation/sonoff/sonoff_preparation.md new file mode 100644 index 0000000000..70599bc4c7 --- /dev/null +++ b/docs/transparent-validation/sonoff/sonoff_preparation.md @@ -0,0 +1,137 @@ + +# Sonoff preparation + +The below section of the documentation is based on the +[EPSHome documentation](https://esphome.io/devices/sonoff_s20.html) + +1. Open the Sonoff case. + +1. Check if the headers are soldered to the board. If not - 4 pin header + raster 2.54 mm should be soldered to the board in accordance with the below + images. + + ![sonoff_without_header](images/sonoff_without_header.jpg) + + ![sonoff_with_header](images/sonoff_with_header.jpg) + +1. Connect the USB-UART converter to the USB port. + + ![uart connection](images/sonoff-s20-uart.jpg) + +1. Create a Sonoff configuration file. The file extension should be `.yaml` and + it should contain the device configuration. + + Example configuration: + + ```yml + esphome: + name: XXXXXX + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: "XXXXXX" + password: "XXXXXX" + # manual_ip: + # # Set this to the IP of the ESP + # static_ip: 192.168.4.187 + # # Set this to the IP address of the router. Often ends with .1 + # gateway: 192.168.4.1 + # # The subnet of the network. 255.255.255.0 works for most home networks. + # subnet: 255.255.255.0 + power_save_mode: none + + + # # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Sonoff1 Fallback Hotspot" + password: "123456789" + + + captive_portal: + + # Enable logging + logger: + + # Enable Home Assistant API + api: + + + ota: + + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff S20 Button" + on_press: + - switch.toggle: relay + - platform: status + name: "Sonoff S20 Status" + + + switch: + - platform: gpio + name: "Sonoff S20 Relay" + pin: GPIO12 + id: relay + + output: + - platform: esp8266_pwm + id: s20_green_led + pin: GPIO13 + inverted: True + + light: + - platform: monochromatic + name: "Sonoff S20 Green LED" + output: s20_green_led + + web_server: + port: 80 + reboot_timeout: 0s + ``` + +1. Run the docker container in the folder containing created `.yaml` + configuration file: + + ```sh + docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -p 6052:6052 -it esphome/esphome + ``` + +1. Open the browser and type into the web browser the following address: + + ```bash + http://localhost:6052/ + ``` + +1. Put the device in flash mode. Putting the device in this mode should be done + in accordance with the + [documentation](https://esphome.io/devices/sonoff_s20.html#step-4-uploading-firmware). +1. Change the upload method from OTA to `/dev/ttyUSB0`. After this operation, + the new element with the name specified in `esphome:name` should be + displayed. + +1. Select the option `Upload`. After clicking, the program should generate + the image, compile it and upload it to the device. +1. After successful upload replug the device to the USB (**without** the button + pressed) to get out of the flashing mode. + +1. Open connection to the device in the PC terminal by typing: + + ```bash + sudo minicom -D /dev/ttyUSB0 -o -b 115200. + ``` + + > Note: `/dev/ttyUSB0` is example device - check whether `USB0` is the + correct one. + +1. Check if the device is responsible - whether network connectivity + information is generated. + + > Note: The effective range for this device is only a few meters. + +1. Based on the minicom logs read the IP address assigned to the device. diff --git a/mkdocs.yml b/mkdocs.yml index 8bf6b57064..0789cdb914 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -351,6 +351,8 @@ nav: - 'Specification': transparent-validation/sd-wire/specification.md - 'Usage': transparent-validation/sd-wire/usage-validation.md - 'FAQ': transparent-validation/sd-wire/faq.md + - 'Sonoff': + - 'Sonoff preparation': transparent-validation/sonoff/sonoff_preparation.md - 'PiKVM': - 'Assembly and validation': transparent-validation/pikvm/assembly-and-validation.md - 'Twonkie': From 7b64a5e15af66d91ce5ce9efd740852bf6ae25ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Mon, 27 Nov 2023 14:08:04 +0100 Subject: [PATCH 2/4] docs/transparent-validation/protectli/: Add Protectli assembly guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Żygowski --- .../protectli/images/bad_cable.jpg | Bin 0 -> 39379 bytes .../protectli/images/cable_connectors.jpg | Bin 0 -> 43321 bytes .../protectli/images/good_cable.jpg | Bin 0 -> 29086 bytes .../protectli/laboratory-assembly-guide.md | 436 ++++++++++++++++++ mkdocs.yml | 2 + 5 files changed, 438 insertions(+) create mode 100644 docs/transparent-validation/protectli/images/bad_cable.jpg create mode 100644 docs/transparent-validation/protectli/images/cable_connectors.jpg create mode 100644 docs/transparent-validation/protectli/images/good_cable.jpg create mode 100644 docs/transparent-validation/protectli/laboratory-assembly-guide.md diff --git a/docs/transparent-validation/protectli/images/bad_cable.jpg b/docs/transparent-validation/protectli/images/bad_cable.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60034a388f23783a3ed10e395b12da7cbef3054e GIT binary patch literal 39379 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 YDpaXbrAn15RH;(Eqo(a+w!Me{*={x42LJ#7 literal 0 HcmV?d00001 diff --git a/docs/transparent-validation/protectli/images/cable_connectors.jpg b/docs/transparent-validation/protectli/images/cable_connectors.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56ac6ac05c72200bbe629545869ed3bb08a62841 GIT binary patch literal 43321 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 F{{zgltiu2R literal 0 HcmV?d00001 diff --git a/docs/transparent-validation/protectli/images/good_cable.jpg b/docs/transparent-validation/protectli/images/good_cable.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8dc77277129b24545f079e2f244f3b18fc8c7963 GIT binary patch literal 29086 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 z z=dx!}v%|tqa36)CF)uS_{aE{q-_U{*24Xs}JxzAFTzle8pQnQKa>vkn2Kg$>J{ftk z6@IN{d~^D^Sm%kr#LK!*CHc3N?Wb&T+mB8?bOyjurbt0P(5Fs|A~xHq6ssW76x#?@ z#$(OX-D;emZC*&?`-}fjm~AC-;TL9 zHaXU<=8b_=Kg=sByLG(8;|&VfXkq8{!ncU|`gM36vU(Cr9&fZHeH8VwRhY>YAhl$M zb_j^msEX<(@AYJsP>2QDQr`MhN@hLKOe!a&}nTgd;HZrk)6ypTfWRO zZ?pv$;t$}p_xY4Fj!=-uSBLrk9fuq}P^ph@uidwe;hY~RSO$Yg@gt^;y8GjZ)l++2 z`$Vhn1)`X%V%+cB@Y~M>3_f_BrwF6en20JNl^%1jZQbKi)QM87C@x&mon>%{XprW2 zQktO4doJe5k7v-*ez%jnJ1fNlSgymeRPD>0e>Re$$IR~(h>OSW3{}qK7e@G=3Io~x zA1pG%GO0-_yrCxhoQ!?<@8s7uH{#!2 zV&+mwGTDOuNNF1O#F@Oi{xg}>0wWSBy(5{__jKacU!LW@Z6`oQJ$awwXKQAi{U;11 z=6bpI;HgRQ8$1m$u&14|wy!*Xc*Nwv9~T3~n|%SWrIS_i65CuOylNMC|J2)Zl8e+8 zGa)FhG8*Jg(nnRGsc|kUY3<3)mhEn=+Gnu};uY%XIBx$(3K$Ai$_C2vPOZ}C?HV&o zOAk308wGe$m}Wi>xs)xlioD1FI-eMBD*=NMwY<#Fa$uqSBUZOMF_NMxhu<0gZtN~& zgrUvDp?5B>WR=e{n)N;&UQYMidYK~>phmrMtGJz(&?uxiD=XWQwXf?I^vHQrY_j7A z=|^)f0l&%!5^epYHir|12ds$uSvv$Z!R%IbM&*-7kxW+B$;@}HHeX#)9{l>E5K($t zKR6d`N63pC<`Md8j5;*1TeJ}T-LGC>DqM4qp{(vs`sIaoSB%{+!EmS`ubP)BRC3l#>yvn40$S@fOGVclftKoXx-EYnE}q1wv`EI^r!X$vVMrjdJY@Uogh93IQ)u!* zXeDMUMF@r0MJbB&@6 zNGwz=sLQWn-1wN~y}A?m94&WD8`82ng04ha>J$Crh-WtGm~+!RAB~+8RI;+t*wXPsv1i0@p##EHa0>rVk$!LP{kVHL684~_x5_Um@r%br$M zvsWSMcF@5$-&AWGjrdh7-k^gxA&`gE%mfBg8_-&X7a&r(Ogn0L)#qi4a38fjrk)k! zOVuPg7ix%XoE3}h>~IxcA<^qmfF}lw38NU#RN literal 0 HcmV?d00001 diff --git a/docs/transparent-validation/protectli/laboratory-assembly-guide.md b/docs/transparent-validation/protectli/laboratory-assembly-guide.md new file mode 100644 index 0000000000..bc0f0867ea --- /dev/null +++ b/docs/transparent-validation/protectli/laboratory-assembly-guide.md @@ -0,0 +1,436 @@ +# Laboratory stand dedicated to Protectli platforms assembly guide + +## Introduction + +This document describes the assembly procedure dedicated to the Protectli +platforms (VP2410, VP2420, VP4630/VP4650/VP4670, V1210/V1410/V1610) testing +stand. + +## Prerequisites + +The below table contains information about all elements which are needed to +create the testing stand. + +=== "VP2410" + + * VP2410 platform + * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) + * RTE power supply 5V 2A Micro-USB + * 6x standard female-female connection wire 2.54 mm raster + * 6x standard female-female connection wire 2.54/2.00 mm raster + * Power supply for the platform: 12V 5A + * 2x RJ45 cable: 1 for RTE and 1 for the platform + * Micro-USB to USB-A male-male cable for console + +=== "VP2420" + + * VP2420 platform + * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) + * RTE power supply 5V 2A Micro-USB + * 6x standard female-female connection wire 2.54 mm raster + * 6x standard female-female connection wire 2.54/2.00 mm raster + * Power supply for the platform: 12V 5A + * 2x RJ45 cable: 1 for RTE and 1 for the platform + * Micro-USB to USB-A male-male cable for console + +=== "VP4630/VP4650/VP4670" + + * VP4630/VP4650/VP4670 platform + * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) + * RTE power supply 5V 2A Micro-USB + * Sonoff S20 type E (relay unused due to disruptions in power during high CPU load) + * 6x standard female-female connection wire 2.54 mm raster + * 6x standard female-female connection wire 2.54/2.00 mm raster + * USB-UART converter with 4-wire cable + * 4-pin header 2.54 mm raster + * Pomona SOIC8 clip + * 2x RJ45 cable: 1 for RTE and 1 for the platform + * Micro-USB to USB-A male-male cable for console + * Power supply for the platform: + - VP4630: 12V 5A + - VP4650/VP4670: 12V 7.5A + +=== "V1210/V1410/V1610" + + * V1210/V1410/V1610 platform + * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) + * RTE power supply 5V 2A Micro-USB + * 6x standard female-female connection wire 2.54 mm raster + * 6x standard female-female connection wire 2.54/2.00 mm raster + * Power supply for the platform: 12V 4A + * USB-C to USB-A male-male cable for console + * 2x RJ45 cable: 1 for RTE and 1 for the platform + +## Pre-setup activities + +The following subsections describe the method of preparing all the +components of the laboratory stand. + +### Platform + +The bottom cover has to be removed to connect wires and clips to the platform. + +### RTE + +RTE (acronym: Remote Testing Environment) should be prepared in accordance with +[Quick start guide](../rte/v1.1.0/quick-start-guide.md) documentation dedicated +to the device. + +### Sonoff + +Prepare Sonoff according to [Sonoff preparation +instructions](../sonoff/sonoff_preparation.md) for platforms that require +Sonoff for power control (see [Prerequisites](#prerequisites)). + +## Connections + +The following sections describe how to enable all of the following features: + +* serial connection to the platform, +* controlling power supply, +* enabling basic power actions with the platform (power off/power on/reset), +* external flashing with the RTE, +* CMOS reset circuit. + +### Serial connection + +Depending on platform connect the USB-C or MicroUSB to the platform console +port and the USB-A end to one of the RTE USB-A ports. + +### Power supply controlling + +=== "VP2410" + + Connect 12V power supply to RTE J13 connector, then RTE J12 connector to + DC connector. Do not use any DC jack adapters as these seem to introduce + power losses and noises, making the power connection unstable. + + Picture of the improper cable: + + ![](images/bad_cable.jpg) + + Picture of the proper cable: + + ![](images/good_cable.jpg) + + One has to solder the good cable with the half of bad cable to form a full + cable. Cut the bad cable in half and strip the isolation. Take the red wire + and solder it to the proper cables' white striped wire, this is the hot + wire with positive voltage. Isolate the connection with a tape. Take the + second black wire from the improper cable and solder it to the unstriped + wire of the proper cable. Use tape to isolate and strengthen the whole + connection. The cable is ready. Be sure to use plugs in the following way: + + ![](images/cable_connectors.jpg) + +=== "VP2420" + + Connect 12V power supply to RTE J13 connector, then RTE J12 connector to + DC connector. Do not use any DC jack adapters as these seem to introduce + power losses and noises, making the power connection unstable. + + Picture of the improper cable: + + ![](images/bad_cable.jpg) + + Picture of the proper cable: + + ![](images/good_cable.jpg) + + One has to solder the good cable with the half of bad cable to form a full + cable. Cut the bad cable in half and strip the isolation. Take the red wire + and solder it to the proper cables' white striped wire, this is the hot + wire with positive voltage. Isolate the connection with a tape. Take the + second black wire from the improper cable and solder it to the unstriped + wire of the proper cable. Use tape to isolate and strengthen the whole + connection. The cable is ready. Be sure to use plugs in the following way: + + ![](images/cable_connectors.jpg) + +=== "VP4630/VP4650/VP4670" + + Connect platform power supply EU plug to Sonoff. + +=== "V1210/V1410/V1610" + + Connect 12V power supply to RTE J13 connector, then RTE J12 connector to + DC connector. Do not use any DC jack adapters as these seem to introduce + power losses and noises, making the power connection unstable. + + Picture of the improper cable: + + ![](images/bad_cable.jpg) + + Picture of the proper cable: + + ![](images/good_cable.jpg) + + One has to solder the good cable with the half of bad cable to form a full + cable. Cut the bad cable in half and strip the isolation. Take the red wire + and solder it to the proper cables' white striped wire, this is the hot + wire with positive voltage. Isolate the connection with a tape. Take the + second black wire from the improper cable and solder it to the unstriped + wire of the proper cable. Use tape to isolate and strengthen the whole + connection. The cable is ready. Be sure to use plugs in the following way: + + ![](images/cable_connectors.jpg) + +### Basic power operations enabling + +Connect the RTE J11 header to the platform FP1/F_PANEL1 header using 2.54mm to +2mm wires as described in the table: + +| RTE | Protectli | +|:---------:|:-----------------------------:| +| J11 pin 5 | FP1/F_PANEL1 pin 6 (PWR_ON#) | +| J11 pin 6 | FP1/F_PANEL1 pin 7 (RST#) | +| J15 pin 1 | FP1/F_PANEL1 pin 9 (GND) | + +### External flashing enabling + +=== "VP2410" + + External flashing not possible with Pomona clip, the flash chip lies under + the chassis, which serves the cooling purposes. One option is to drill a + hole in the case where the flash chip lies. + +=== "VP2420" + + External flashing not possible with Pomona clip, the flash chip lies under + the SODIMM module. + +=== "VP4630/VP4650/VP4670" + + Flash chip is socketed. One has to desolder the socket, solder the flash + chip in place of the socket and connect the Pomona SOIC8 clip. + +=== "V1210/V1410/V1610" + + Connect the RTE SPI header to the platform using the 2.54mm female-female + wires as described in the table: + + | RTE SPI header | 6pin flash header | + |:-------------------:|:--------------------------------------:| + | J7 pin 1 (Vcc) | pin 1 (SPI Power) | + | J7 pin 2 (GND) | pin 2 (GND) | + | J7 pin 3 (CS) | pin 4 (BIOS SPI CS pin) | + | J7 pin 4 (SCLK) | pin 6 (SPI Clock) | + | J7 pin 5 (MISO) | pin 5 (MISO) | + | J7 pin 6 (MOSI) | pin 3 (MOSI) | + +### CMOS reset circuit + +=== "VP2410" + + Connect the RTE J11 header to the platform JCMOS1 header using 2.54mm to 2mm + wires as described in the table: + + | RTE | Protectli | + |:---------:|:--------------------------:| + | J11 pin 8 | JCMOS1 pin 1 (CLR_CMOS) | + | Any GND | JCMOS1 pin 2 (GND) | + + Resetting CMOS is required for proper external flashing. + +=== "VP2420" + + Connect the RTE J11 header to the platform JCMOS1 header using 2.54mm to 2mm + wires as described in the table: + + | RTE | Protectli | + |:---------:|:--------------------------:| + | J11 pin 8 | JCMOS1 pin 1 (CLR_CMOS) | + | Any GND | JCMOS1 pin 2 (GND) | + + Resetting CMOS is required for proper external flashing. + +=== "VP4630/VP4650/VP4670" + + Connect the RTE J11 header to the platform JCMOS1 header using 2.54mm to 2mm + wires as described in the table: + + | RTE | Protectli | + |:---------:|:--------------------------:| + | J11 pin 8 | JCMOS1 pin 2 (CLR_CMOS) | + | Any GND | JCMOS1 pin 1 (GND) | + + Resetting CMOS is required for proper external flashing. + +=== "V1210/V1410/V1610" + + Connect the RTE J11 header to the platform CLR_CMOS1 header using 2.54mm to 2mm + wires as described in the table: + + | RTE | Protectli | + |:---------:|:--------------------------:| + | J11 pin 8 | CLR_CMOS1 pin 2 (CLR_CMOS) | + | Any GND | CLR_CMOS1 pin 3 (GND) | + + Resetting CMOS is required for proper external flashing. + +### Complete Setup + +After preparing all of the connections also three activities should be +performed to enable all of the test stand features: + +1. Connect Sonoff to the mains (VP4630/VP4650/VP4670 only). For other + platforms, connect the platform power supply to the mains. +2. Connect the RTE to the Internet by using the Ethernet cable. +3. Connect the RTE to the mains by using the microUSB 5 V/2 A power supply. + +## Theory of operation + +The following sections describe how to use all of the enabled features: + +* serial connection to the platform, +* controlling power supply, +* enabling basic power actions with the platform (power off/power on/reset), +* external flashing with the RTE, +* CMOS reset. + +### Serial connection + +The method of setting and using serial connection is described in the +[Serial connection guide](../rte/v1.1.0/serial-port-connection-guide.md). + +### Power supply controlling + +=== "VP2410" + + Power supply controlling is performed with the relay module on RTE + connected to one of RTE GPIOs. Power operation should be performed using + the `rte_ctrl` script implemented in `meta-rte` (OS image dedicated to the + RTE platform). + + To toggle the power supply use the below command: + + ```bash + rte_ctrl rel + ``` + +=== "VP2420" + + Power supply controlling is performed with the relay module on RTE + connected to one of RTE GPIOs. Power operation should be performed using + the `rte_ctrl` script implemented in `meta-rte` (OS image dedicated to the + RTE platform). + + To toggle the power supply use the below command: + + ```bash + rte_ctrl rel + ``` + +=== "VP4630/VP4650/VP4670" + + Power supply controlling (in this case: controlling the state of Sonoff) + should be performed based on the `sonoff.sh` script implemented in + `meta-rte` (OS image dedicated to the RTE platform). + + > Note, that before using the above-mentioned script, it should be modified and + `SONOFF_IP` parameter should be set in accordance with obtained Sonoff IP address. + + To perform basic power operations use the below-described commands: + + 1. Turn on the power supply: + + ```bash + ./sonoff on + ``` + + 2. Turn off the power supply: + + ```bash + ./sonoff on + ``` + +=== "V1210/V1410/V1610" + + Power supply controlling is performed with the relay module on RTE + connected to one of RTE GPIOs. Power operation should be performed using + the `rte_ctrl` script implemented in `meta-rte` (OS image dedicated to the + RTE platform). + + To toggle the power supply use the below command: + + ```bash + rte_ctrl rel + ``` + +### Basic power operations + +Basic power operations should be performed based on the `rte_ctrl` script +implemented in `meta-rte` (OS image dedicated to the RTE platform). To perform +basic power operations use the below-described commands: + +1. Turn on the platform: + + ```bash + rte_ctrl pon + ``` + +1. Turn off the platform: + + ```bash + rte_ctrl poff + ``` + +1. Reset the platform: + + ```bash + rte_ctrl reset + ``` + +> Note, that in order for the above commands to work properly, the platform +should be powered up: both Sonoff and the power supply must be turned on. + +### External flashing + +The external flashing procedure should be performed based on the scripts +implemented on the RTE platform. To perform the flashing operation reproduce, +the below-described steps: + +1. By using `scp` put the requested Dasharo file to the RTE: + + ```bash + scp / root@:/tmp/coreboot.rom + ``` + + Where: + + - `path_to_firmware` - path to firmware, which should send to RTE, + - `firmware_file` - the name of the firmware file, which should be sent + to RTE, + - `RTE_IP` - IP address of the connected RTE. + +1. Login to RTE via `ssh` or `minicom`. +1. Read the flash chip by executing the following command on RTE: + + ```bash + ./flash.sh read tmp/dump.rom + ``` + +1. If the reading was successful, the output from the command above should + contain the phrase `Verifying flash... VERIFIED`. +1. Write the flash chip by executing the following command on RTE: + + ```bash + ./flash.sh write /tmp/coreboot.rom + ``` + + > Do not interrupt the flashing procedure in any way (especially by + changing connections). It may cause hardware damage! + +1. If the reading was successful, the output from the command above should + contain the phrase `Verifying flash... VERIFIED`. + +### CMOS clear + +To clear the CMOS, turn off the power with Sonoff or relay and use the +following commands: + +```bash +echo 1 > /sys/class/gpio/gpio412/value +sleep 10 +echo 0 > /sys/class/gpio/gpio412/value +``` diff --git a/mkdocs.yml b/mkdocs.yml index 0789cdb914..79d447a071 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -331,6 +331,8 @@ nav: - 'Laboratory stand assembly guide': transparent-validation/msi-z690/laboratory-assembly-guide.md - 'MSI PRO Z790-P': - 'Laboratory stand assembly guide': transparent-validation/msi-z790/laboratory-assembly-guide.md + - 'Protectli platforms': + - 'Laboratory stand assembly guide': transparent-validation/protectli/laboratory-assembly-guide.md - 'Supermicro X11 LGA1151 Series': - 'Theory of Operation': transparent-validation/supermicro_x11_lga1151_series/theory-of-operation.md - 'muxPi': From c8368efc79d52f0503fa74520cf0ce9e02e80be2 Mon Sep 17 00:00:00 2001 From: Piotr Lasota Date: Wed, 29 Nov 2023 09:26:48 +0100 Subject: [PATCH 3/4] sonoff_preparation.md: add info about Sonoff S26 Signed-off-by: Piotr Lasota --- .../sonoff/sonoff_preparation.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/transparent-validation/sonoff/sonoff_preparation.md b/docs/transparent-validation/sonoff/sonoff_preparation.md index 70599bc4c7..9d0dd6e13f 100644 --- a/docs/transparent-validation/sonoff/sonoff_preparation.md +++ b/docs/transparent-validation/sonoff/sonoff_preparation.md @@ -4,6 +4,10 @@ The below section of the documentation is based on the [EPSHome documentation](https://esphome.io/devices/sonoff_s20.html) +> The following procedure is for Sonoff S20. It has also been tested on + **Sonoff S26 Release 2**, however, the connection method for flashing is + different and is described [here](https://tasmota.github.io/docs/devices/Sonoff-S26-Smart-Socket/#s26-release-2). + 1. Open the Sonoff case. 1. Check if the headers are soldered to the board. If not - 4 pin header @@ -135,3 +139,33 @@ The below section of the documentation is based on the > Note: The effective range for this device is only a few meters. 1. Based on the minicom logs read the IP address assigned to the device. + +1. The device should have a statically assigned IP address based on its MAC + address - this will make it easy to find it on the network. + +The device will host the website which can be used to switch the relay. + +Bear in mind that the antenna in this device is very poorly +performing - effective range is only few meters + +--- + +## Controlling the relay switch + +To switch the relay the following bash commands may be used: + +> `192.168.43.171` should be replaced with assigned IP. + +```sh +curl -X POST http://192.168.43.171/switch/sonoff_s20_relay/toggle +curl -X POST http://192.168.43.171/switch/sonoff_s20_relay/turn_off +curl -X POST http://192.168.43.171/switch/sonoff_s20_relay/turn_on +``` + +To check the state of the component use: + +```sh +# name @ name in /home/name/workspace/sonoff/docker [16:28:02] C:1 +$ curl http://192.168.43.171/switch/sonoff_s20_relay +{"id":"switch-sonoff_s20_relay","state":"OFF","value":false} +``` From 750fb5dd54912aa62d9f849f6e2d9a06c6652bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBygowski?= Date: Wed, 29 Nov 2023 13:57:14 +0100 Subject: [PATCH 4/4] transparent-validation/protectli: generalize prerequisites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Żygowski --- .../protectli/laboratory-assembly-guide.md | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/docs/transparent-validation/protectli/laboratory-assembly-guide.md b/docs/transparent-validation/protectli/laboratory-assembly-guide.md index bc0f0867ea..1a24fa9c98 100644 --- a/docs/transparent-validation/protectli/laboratory-assembly-guide.md +++ b/docs/transparent-validation/protectli/laboratory-assembly-guide.md @@ -11,40 +11,31 @@ stand. The below table contains information about all elements which are needed to create the testing stand. +* [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) +* RTE power supply 5V 2A Micro-USB +* 6x standard female-female connection wire 2.54 mm raster +* 6x standard female-female connection wire 2.54/2.00 mm raster +* 2x RJ45 cable: 1 for RTE and 1 for the platform + === "VP2410" * VP2410 platform - * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) - * RTE power supply 5V 2A Micro-USB - * 6x standard female-female connection wire 2.54 mm raster - * 6x standard female-female connection wire 2.54/2.00 mm raster * Power supply for the platform: 12V 5A - * 2x RJ45 cable: 1 for RTE and 1 for the platform * Micro-USB to USB-A male-male cable for console === "VP2420" * VP2420 platform - * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) - * RTE power supply 5V 2A Micro-USB - * 6x standard female-female connection wire 2.54 mm raster - * 6x standard female-female connection wire 2.54/2.00 mm raster * Power supply for the platform: 12V 5A - * 2x RJ45 cable: 1 for RTE and 1 for the platform * Micro-USB to USB-A male-male cable for console === "VP4630/VP4650/VP4670" * VP4630/VP4650/VP4670 platform - * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) - * RTE power supply 5V 2A Micro-USB * Sonoff S20 type E (relay unused due to disruptions in power during high CPU load) - * 6x standard female-female connection wire 2.54 mm raster - * 6x standard female-female connection wire 2.54/2.00 mm raster * USB-UART converter with 4-wire cable * 4-pin header 2.54 mm raster * Pomona SOIC8 clip - * 2x RJ45 cable: 1 for RTE and 1 for the platform * Micro-USB to USB-A male-male cable for console * Power supply for the platform: - VP4630: 12V 5A @@ -53,13 +44,8 @@ create the testing stand. === "V1210/V1410/V1610" * V1210/V1410/V1610 platform - * [RTE v1.1.0](https://shop.3mdeb.com/shop/open-source-hardware/open-source-hardware-3mdeb/rte/) - * RTE power supply 5V 2A Micro-USB - * 6x standard female-female connection wire 2.54 mm raster - * 6x standard female-female connection wire 2.54/2.00 mm raster * Power supply for the platform: 12V 4A * USB-C to USB-A male-male cable for console - * 2x RJ45 cable: 1 for RTE and 1 for the platform ## Pre-setup activities