Compare commits

...

8 Commits

Author SHA1 Message Date
philippe44
0203682200 Lyrat 1.2 and ES8311 2026-02-16 12:51:39 +01:00
philippe44
0fee152cce 0.602 2026-02-16 12:32:15 +01:00
philippe44
7ca2e931eb Merge pull request #538 from michaelherger/master-v4.3
Fix missing colon
2026-02-16 12:25:42 +01:00
philippe44
b15263b961 Merge pull request #546 from irgendwer92/patch-1
README.md: Put touch button note back into button section
2026-02-16 12:24:07 +01:00
irgendwer92
967f448994 Put touch button note back into button section
The note about touch buttons is currently in the ethernet section, i put it back to the buttons.
2026-02-01 13:43:37 +01:00
Michael Herger
689a9fb057 Fix missing colon 2026-01-07 14:28:53 +01:00
philippe44
a71aff6882 Add files via upload 2025-12-30 13:02:24 +01:00
github-actions
e46df63090 Update prebuilt objects [skip actions] 2025-12-26 20:57:08 +00:00
24 changed files with 1814 additions and 118 deletions

View File

@@ -157,6 +157,21 @@ XMT - 3.3V
Use the `squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults` configuration file.
### ESP32 LyraT Mini v1.2
This board is one of the [audio developpement board](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/get-started-esp32-lyrat-mini.html) designed by espressif for their ESP-ADF (Espressif Audio Development Framework). It uses ESP32-WROVER-E as it core and ES8311 as DAC.
A jack connector can be used or an HP output.
It also contains 2 LEDS (one green, one blue) and 8 Buttons. Those buttons are not supported for now.
An ADC is also present on the board, but not used in squeezelite use case.
As for now, audio playback and LEDs are working.
Use the `squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults` configuration file.
- i2c_config: `scl=25,sda=18,speed=400000,port=1`
- dac_config: `model=es8311,bck=5,ws=25,do=26,sda=18,scl=23,i2c=24`
- set_GPIO: `22=green,27=red,19=jack`
### SqueezeAmpToo !
And the super cool project https://github.com/rochuck/squeeze-amp-too
@@ -184,11 +199,11 @@ Default and only "host" is 1 as others are used already by flash and spiram. The
### DAC/I2S
The NVS parameter "dac_config" set the gpio used for i2s communication with your DAC. You can define the defaults at compile time but nvs parameter takes precedence except for named configurations
```
bck=<gpio>,ws=<gpio>,do=<gpio>[,mck=0|1|2][,mute=<gpio>[:0|1][,model=TAS57xx|TAS5713|AC101|WM8978|ES8388|I2S][,sda=<gpio>,scl=<gpio>[,i2c=<addr>]]
bck=<gpio>,ws=<gpio>,do=<gpio>[,mck=0|1|2][,mute=<gpio>[:0|1][,model=TAS57xx|TAS5713|AC101|WM8978|ES8388|ES8311|I2S][,sda=<gpio>,scl=<gpio>[,i2c=<addr>]]
```
if "model" is not set or is not recognized, then default "I2S" is used. The option "mck" is used for some codecs that require a master clock (although they should not). By default GPIO0 is used as MCLK and only recent builds (post mid-2023) can use 1 or 2. Also be aware that this cannot coexit with RMII Ethernet (see ethernet section below). I2C parameters are optional and only needed if your DAC requires an I2C control (See 'dac_controlset' below). Note that "i2c" parameters are decimal, hex notation is not allowed.
So far, TAS57xx, TAS5713, AC101, WM8978 and ES8388 are recognized models where the proper init sequence/volume/power controls are sent. For other codecs that might require an I2C commands, please use the parameter "dac_controlset" that allows definition of simple commands to be sent over i2c for init, power, speaker and headset on and off using a JSON syntax:
So far, TAS57xx, TAS5713, AC101, WM8978, ES8388 and ES8311 are recognized models where the proper init sequence/volume/power controls are sent. For other codecs that might require an I2C commands, please use the parameter "dac_controlset" that allows definition of simple commands to be sent over i2c for init, power, speaker and headset on and off using a JSON syntax:
```json
{ <command>: [ <item1>, <item2>, ... <item3> ],
<command>: [ <item1>, <item2>, ... <item3> ],
@@ -478,11 +493,12 @@ The benefit of the "raw" mode is that you can build a player which is as close a
There is no good or bad option, it's your choice. Use the NVS parameter "lms_ctrls_raw" to change that option
**Note that gpio 36 and 39 are input only and cannot use interrupt. When using them for a button, a 100ms polling is started which is expensive. Long press is also likely to not work very well**
**Note:** Touch buttons that can be found on some board like the LyraT V4.3 are not supported currently.
### Ethernet
Wired ethernet is supported by esp32 with various options but squeezeESP32 is only supporting a Microchip LAN8720 with a RMII interface like [this](https://www.aliexpress.com/item/32858432526.html) or SPI-ethernet bridges like Davicom DM9051 [that](https://www.amazon.com/dp/B08JLFWX9Z) or W5500 like [this](https://www.aliexpress.com/item/32312441357.html).
**Note:** Touch buttons that can be find on some board like the LyraT V4.3 are not supported currently.
#### RMII (LAN8720)
- RMII PHY wiring is fixed and can not be changed

File diff suppressed because it is too large Load Diff

View File

@@ -51,6 +51,19 @@ static const struct {
{\"reg\":26,\"val\":0}, {\"reg\":27,\"val\":0}, {\"reg\":25,\"val\":50}, {\"reg\":38,\"val\":0}, \
{\"reg\":39,\"val\":184}, {\"reg\":42,\"val\":184}, {\"reg\":46,\"val\":30}, {\"reg\":47,\"val\":30}, \
{\"reg\":48,\"val\":30}, {\"reg\":49,\"val\":30}, {\"reg\":2,\"val\":170}]}" },
{ "es8311", true,
"{\"init\":[ \
{\"reg\":1,\"val\":48}, {\"reg\":2,\"val\":0}, {\"reg\":3,\"val\":16}, {\"reg\":22,\"val\":36}, \
{\"reg\":4,\"val\":16}, {\"reg\":5,\"val\":0}, {\"reg\":11,\"val\":0}, {\"reg\":12,\"val\":0}, \
{\"reg\":16,\"val\":31}, {\"reg\":17,\"val\":127}, {\"reg\":0,\"val\":128}, {\"reg\":0,\"val\":128}, \
{\"reg\":1,\"val\":63}, {\"reg\":1,\"val\":63}, {\"reg\":2,\"val\":0}, {\"reg\":5,\"val\":0}, \
{\"reg\":3,\"val\":16}, {\"reg\":4,\"val\":16}, {\"reg\":7,\"val\":0}, {\"reg\":8,\"val\":255}, \
{\"reg\":6,\"val\":3}, {\"reg\":1,\"val\":63}, {\"reg\":6,\"val\":3}, {\"reg\":19,\"val\":16}, \
{\"reg\":27,\"val\":10}, {\"reg\":28,\"val\":106}, {\"reg\":9,\"val\":12}, {\"reg\":10,\"val\":12}, \
{\"reg\":9,\"val\":12}, {\"reg\":10,\"val\":12}, {\"reg\":50,\"val\":178}, {\"reg\":9,\"val\":12}, \
{\"reg\":10,\"val\":12}, {\"reg\":23,\"val\":191}, {\"reg\":14,\"val\":2} ,{\"reg\":18,\"val\":0}, \
{\"reg\":20,\"val\":26}, {\"reg\":20,\"val\":26}, {\"reg\":13,\"val\":1}, {\"reg\":21,\"val\":64}, \
{\"reg\":55,\"val\":72}, {\"reg\":69,\"val\":0}, {\"reg\":50,\"val\":200}]}" },
{ NULL, false, NULL }
};

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -80,6 +80,8 @@ declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
@@ -244,6 +246,7 @@ declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare let sd: {};
declare let rf: boolean;
declare function refreshStatus(): void;

View File

@@ -1,5 +1,5 @@
target_add_binary_data( __idf_wifi-manager webapp/dist/css/index.3b0bbfde52d921a84f9b.css.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/favicon-32x32.png BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/index.html.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.3fded7.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.3fded7.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.d35fda.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.d35fda.bundle.js.gz BINARY)

View File

@@ -6,29 +6,29 @@ extern const uint8_t _favicon_32x32_png_start[] asm("_binary_favicon_32x32_png_s
extern const uint8_t _favicon_32x32_png_end[] asm("_binary_favicon_32x32_png_end");
extern const uint8_t _index_html_gz_start[] asm("_binary_index_html_gz_start");
extern const uint8_t _index_html_gz_end[] asm("_binary_index_html_gz_end");
extern const uint8_t _index_3fded7_bundle_js_gz_start[] asm("_binary_index_3fded7_bundle_js_gz_start");
extern const uint8_t _index_3fded7_bundle_js_gz_end[] asm("_binary_index_3fded7_bundle_js_gz_end");
extern const uint8_t _node_vendors_3fded7_bundle_js_gz_start[] asm("_binary_node_vendors_3fded7_bundle_js_gz_start");
extern const uint8_t _node_vendors_3fded7_bundle_js_gz_end[] asm("_binary_node_vendors_3fded7_bundle_js_gz_end");
extern const uint8_t _index_d35fda_bundle_js_gz_start[] asm("_binary_index_d35fda_bundle_js_gz_start");
extern const uint8_t _index_d35fda_bundle_js_gz_end[] asm("_binary_index_d35fda_bundle_js_gz_end");
extern const uint8_t _node_vendors_d35fda_bundle_js_gz_start[] asm("_binary_node_vendors_d35fda_bundle_js_gz_start");
extern const uint8_t _node_vendors_d35fda_bundle_js_gz_end[] asm("_binary_node_vendors_d35fda_bundle_js_gz_end");
const char * resource_lookups[] = {
"/css/index.3b0bbfde52d921a84f9b.css.gz",
"/favicon-32x32.png",
"/index.html.gz",
"/js/index.3fded7.bundle.js.gz",
"/js/node_vendors.3fded7.bundle.js.gz",
"/js/index.d35fda.bundle.js.gz",
"/js/node_vendors.d35fda.bundle.js.gz",
""
};
const uint8_t * resource_map_start[] = {
_index_3b0bbfde52d921a84f9b_css_gz_start,
_favicon_32x32_png_start,
_index_html_gz_start,
_index_3fded7_bundle_js_gz_start,
_node_vendors_3fded7_bundle_js_gz_start
_index_d35fda_bundle_js_gz_start,
_node_vendors_d35fda_bundle_js_gz_start
};
const uint8_t * resource_map_end[] = {
_index_3b0bbfde52d921a84f9b_css_gz_end,
_favicon_32x32_png_end,
_index_html_gz_end,
_index_3fded7_bundle_js_gz_end,
_node_vendors_3fded7_bundle_js_gz_end
_index_d35fda_bundle_js_gz_end,
_node_vendors_d35fda_bundle_js_gz_end
};

View File

@@ -1,6 +1,6 @@
/***********************************
webpack_headers
dist/css/index.3b0bbfde52d921a84f9b.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.3fded7.bundle.js.gz,dist/js/node_vendors.3fded7.bundle.js.gz
dist/css/index.3b0bbfde52d921a84f9b.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.d35fda.bundle.js.gz,dist/js/node_vendors.d35fda.bundle.js.gz
***********************************/
#pragma once
#include <inttypes.h>

Binary file not shown.

View File

@@ -15,7 +15,7 @@ use Slim::Utils::Strings qw(string cstring);
use Slim::Utils::Log;
use Slim::Utils::Prefs;
use Plugins::SqueezeESP32::Player
use Plugins::SqueezeESP32::Player;
my $log = logger('player.RgbLed');
@@ -72,10 +72,10 @@ sub updateLED {
my $client = shift;
my $on = shift || 1;
my $cprefs = $prefs->client($client);
my $visu = $cprefs->get('led_visualizer') || 0;
my $bright = $cprefs->get('led_brightness') || 20;
$visu = 0 if ($visu < 0 || $visu > ledVisualizerNModes || !(Slim::Player::Source::playmode($client) eq 'play') || !$on);
my $modes = ledVisualizerModes;
my $params = $modes->[$visu]{'params'};
@@ -87,9 +87,9 @@ sub updateLED {
sub ledVisualParams {
my $client = shift;
my $visu = $prefs->client($client)->get('led_visualizer') || 0;
return $ledvisualizers[$visu]{params};
}
@@ -100,8 +100,8 @@ sub ledVisualModeOptions {
'-1' => ' '
};
my $modes = ledVisualizerModes;
my $nmodes = ledVisualizerNModes;
my $modes = ledVisualizerModes;
my $nmodes = ledVisualizerNModes;
for (my $i = 0; $i <= $nmodes; $i++) {
@@ -128,7 +128,7 @@ sub sendDMX {
# get our parameters
my $client = $request->client();
my $count = 0;
my $outData;
my @values = split(',', $request->getParam('_data') || '');
@@ -139,7 +139,7 @@ sub sendDMX {
$count /= 3;
my $data = pack('nn', $request->getParam('_xoff') || 0, $count ) . $outData;
# changed from dmxt to ledd (matches 'ledc' for tricolor led in receiver player)
$client->sendFrame( ledd => \$data );
}
@@ -155,28 +155,28 @@ sub setLEDVisu {
my $client = $request->client();
return if (!$client->hasLED);
my $cprefs = $prefs->client($client);
my $visu = $cprefs->get('led_visualizer') || 0;
my $mode = $request->getParam('_mode') || -1;
if ($mode == -1) {
$visu+=1;
} else {
$visu = $mode;
}
}
$visu = 0 if ($visu < 0 || $visu > ledVisualizerNModes);
$cprefs->set('led_visualizer', $visu);
my $bright = $request->getParam('_bright') || -1;
if ($bright >= 0 && $bright < 256) {
$cprefs->set('led_brightness', $bright);
}
updateLED($client);
# display name
my $modes = ledVisualizerModes;
my $modes = ledVisualizerModes;
my $desc = $modes->[$visu]{'desc'};
my $name = '';
for (my $j = 0; $j < scalar @$desc; $j++) {
@@ -193,7 +193,7 @@ sub setLEDVisu {
sub onNotification {
my $request = shift;
my $client = $request->client || return;
foreach my $player ($client->syncGroupActiveMembers) {
next unless $player->isa('Plugins::SqueezeESP32::Player');
updateLED($player) if $player->hasLED;
@@ -208,9 +208,9 @@ sub setMainMode {
$client->update();
return;
}
Slim::Buttons::Common::pushModeLeft($client, 'INPUT.Choice', {
'listRef' => [
'listRef' => [
{
name => string('PLUGIN_SQUEEZEESP32_LED_VISUALIZER'),
onPlay => sub { Slim::Control::Request::executeRequest($client, ['led_visual']); },
@@ -247,7 +247,7 @@ sub setLedvuBrightMode {
'increment' => 1,
'onChange' => sub {
my ($client, $value) = @_;
$bright = $bright + $value;
if ($bright > 0 && $bright <= 255) {
$prefs->client($client)->set('led_brightness', $bright);

View File

@@ -10,6 +10,6 @@
<name>PLUGIN_SQUEEZEESP32</name>
<description>PLUGIN_SQUEEZEESP32_DESC</description>
<module>Plugins::SqueezeESP32::Plugin</module>
<version>0.601</version>
<version>0.602</version>
<creator>Philippe</creator>
</extensions>

View File

@@ -1,10 +1,10 @@
<?xml version='1.0' standalone='yes'?>
<extensions>
<plugins>
<plugin version="0.601" name="SqueezeESP32" minTarget="7.9" maxTarget="*">
<plugin version="0.602" name="SqueezeESP32" minTarget="7.9" maxTarget="*">
<link>https://github.com/sle118/squeezelite-esp32</link>
<creator>Philippe</creator>
<sha>439637e01db7410157a333446cd284509f877849</sha>
<sha>590aaf4311716815585ebd9770c656cba54e4134</sha>
<email>philippe_44@outlook.com</email>
<desc lang="EN">SqueezeESP32 additional player id (100/101)</desc>
<url>http://raw.githubusercontent.com/sle118/squeezelite-esp32/master-v4.3/plugin/SqueezeESP32.zip</url>

View File

@@ -175,48 +175,48 @@ gWhuDSQPcaeDGHcy7NxRZHmlpHz+/Ot067VuxjGqm9veKNGZMUdroS+ocxAJBXv3
Z1NCCowvpZazNxKccQg7izYwd6HL70WMxCWFU0e70uw9KZqteG7SVcQ=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIIOzCCByOgAwIBAgIQCHNhNIH5XVH5G3SANwHecTANBgkqhkiG9w0BAQsFADA8
MIIIPDCCBySgAwIBAgIQBsMDe40cFre0eD3AUSN7oTANBgkqhkiG9w0BAQsFADA8
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRwwGgYDVQQDExNBbWF6b24g
UlNBIDIwNDggTTAxMB4XDTI1MDkxOTAwMDAwMFoXDTI2MDgyMzIzNTk1OVowGzEZ
UlNBIDIwNDggTTAxMB4XDTI1MDUyMDAwMDAwMFoXDTI2MDUxNTIzNTk1OVowGzEZ
MBcGA1UEAxMQczMuYW1hem9uYXdzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMdxOeavAJSP5sHcShN1qqDR2LF9RtWaXtp5bdgNNKlgt4buDh3f
EGe60xX+RNSANTeyWtUZ8fhtQ7ugj7OoMZi+a2KczPFj3Q34OgM/8+290Z9joZ0p
wkKNwY03qEO6vlr9E/qA0Y9A6xZBD6QNUmD7jR4Etqq7jtBFgocdjZ6bgMqGQ8Uh
Ss5qapqokrKQrbKZLBHKRCqYGoKwgD1ciXiV6iXuJj+GXDmwte7MZAfFyg5OJngh
GKNCMdU38AYRGrfTWoVH5RC67JlfZMenQBK9sB/XnrB3kOkRbBR/spRYsZg+mbaR
Q7uyPL0hTHyDu1KAe8BpmxYoDrvkmkLPr58CAwEAAaOCBVgwggVUMB8GA1UdIwQY
MBaAFIG4DmOKiRIY5fo7O1CVn+blkBOFMB0GA1UdDgQWBBSLsv8vDlH1xvXIpmJ3
htLYjcrMszCCAokGA1UdEQSCAoAwggJ8ghBzMy5hbWF6b25hd3MuY29tghIqLnMz
LmFtYXpvbmF3cy5jb22CKCouczMtYWNjZXNzcG9pbnQudXMtZWFzdC0xLmFtYXpv
bmF3cy5jb22CJCouczMtY29udHJvbC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYIk
czMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgicqLnMzLWRlcHJl
Y2F0ZWQudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLHMzLWNvbnRyb2wuZHVhbHN0
YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgh0qLnMzLWV4dGVybmFsLTIuYW1h
em9uYXdzLmNvbYIaczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CMiouczMtYWNj
ZXNzcG9pbnQuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tghwqLnMz
LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgh0qLnMzLWV4dGVybmFsLTEuYW1hem9u
YXdzLmNvbYImKi5zMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22C
G3MzLWV4dGVybmFsLTIuYW1hem9uYXdzLmNvbYIiczMtY29udHJvbC51cy1lYXN0
LTEuYW1hem9uYXdzLmNvbYIbczMtZXh0ZXJuYWwtMS5hbWF6b25hd3MuY29tgiVz
My1kZXByZWNhdGVkLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgi4qLnMzLWNvbnRy
b2wuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tMBMGA1UdIAQMMAow
ADCCAQoCggEBAMkF0zlDqMKf/RCOFH1yRIsuCK3ZLbpIlhBL36oSgpkV6KWTLfxX
E+wJjmsREQiiQ59B06QHYYRXOnuvks4h52IpnUiQ9Q4rlZblZM+llDeOJ4KPT+xf
3WhbXND0o0+7dvjHRPQeA0b0LGvS0wVnESI+fHtPES2e7zLSVTyc9Cd8py5U1RYJ
zE5oG601rrEUEUBVOMa/BUTF5sYNioJpuPK6E803VJUwpQj6MFIG7gAHtm6smDPq
4L4eRAlKkgQL2mqaRMI1h9K6SpW/hJrKf2V9D8jk4dHwGFBYJICR4hyl16EK2pSH
2uTaXBO3ykOmYJdIeXMRgfPvMKvY7PqErO0CAwEAAaOCBVkwggVVMB8GA1UdIwQY
MBaAFIG4DmOKiRIY5fo7O1CVn+blkBOFMB0GA1UdDgQWBBQwNmD3HxPbjUExpM5y
rBUNT2tQKzCCAokGA1UdEQSCAoAwggJ8ghBzMy5hbWF6b25hd3MuY29tghIqLnMz
LmFtYXpvbmF3cy5jb22CJiouczMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25h
d3MuY29tgiRzMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CHCou
czMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CGnMzLnVzLWVhc3QtMS5hbWF6b25h
d3MuY29tgiQqLnMzLWNvbnRyb2wudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CInMz
LWNvbnRyb2wudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLiouczMtY29udHJvbC5k
dWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLHMzLWNvbnRyb2wuZHVh
bHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgigqLnMzLWFjY2Vzc3BvaW50
LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgjIqLnMzLWFjY2Vzc3BvaW50LmR1YWxz
dGFjay51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYInKi5zMy1kZXByZWNhdGVkLnVz
LWVhc3QtMS5hbWF6b25hd3MuY29tgiVzMy1kZXByZWNhdGVkLnVzLWVhc3QtMS5h
bWF6b25hd3MuY29tghtzMy1leHRlcm5hbC0xLmFtYXpvbmF3cy5jb22CHSouczMt
ZXh0ZXJuYWwtMS5hbWF6b25hd3MuY29tghtzMy1leHRlcm5hbC0yLmFtYXpvbmF3
cy5jb22CHSouczMtZXh0ZXJuYWwtMi5hbWF6b25hd3MuY29tMBMGA1UdIAQMMAow
CAYGZ4EMAQIBMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
KwYBBQUHAwIwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5yMm0wMS5hbWF6
b250cnVzdC5jb20vcjJtMDEuY3JsMHUGCCsGAQUFBwEBBGkwZzAtBggrBgEFBQcw
AYYhaHR0cDovL29jc3AucjJtMDEuYW1hem9udHJ1c3QuY29tMDYGCCsGAQUFBzAC
hipodHRwOi8vY3J0LnIybTAxLmFtYXpvbnRydXN0LmNvbS9yMm0wMS5jZXIwDAYD
VR0TAQH/BAIwADCCAX0GCisGAQQB1nkCBAIEggFtBIIBaQFnAHYA2AlVO5RPev/I
FhlvlE+Fq7D4/F6HVSYPFdEucrtFSxQAAAGZY2zFywAABAMARzBFAiEA52TfXblf
xGMn7zs62yXq7rXB/ccKutSfyoReVaLtluACIFL9G5g8WzioAe/Tmx0cJjYXBzof
9go+a5TjVIY4bpnnAHYAwjF+V0UZo0XufzjespBB68fCIVoiv3/Vta12mtkOUs0A
AAGZY2zFywAABAMARzBFAiAdPbpyBei1fmph20ZWi1ZN7nl9b6EDX0s/gYxduL7k
CQIhAMeQp4B56jeit+b3akK3MHyTQoZBgR2CZMBZI6QVk5DUAHUAlE5Dh/rswe+B
8xkkJqgYZQHH0184AgE/cmd9VTcuGdgAAAGZY2zF4AAABAMARjBEAiBpEesssZJD
0SnUOe2Alz/5nGHs/Usxgzgz/xrMmEAXwAIgI90hHJajlzg30MZC3RKkXV8wezmC
pK+h+FLlSvMOUVowDQYJKoZIhvcNAQELBQADggEBAMMItDbq4GvNzuM8t2iBx90Z
F0hcsivxMOHbbxvBRrLtEYjY5wyvmGdWF2t24YFaYzyEMb0qX0YLxLGpoJCf5vIJ
olRHHgdDdkxg354SVQ4+SB1SvpJlAjyzqAGD4XQHAU3t0+jK+9OfJp8Zh57Z3jzI
zhA5ILi5hT3mW3hbHaNfvDpiauB6Sm9T0jc7853Msuh17LvABsIYlt2gVx48ivJc
oLmsInswJM2kWvD8WGTc0sG0wQfT6GNxEGG9anP3odTgdPUNnm8OKqW8nabzmhfu
sMKmxp3ShPpT0KiO5gBlGsMkDKu0+xKB0QjGaRoRbFC/9f0if9jQX5Hiz/xxpS4=
VR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHYADleUvPOuqT4z
GyyZB7P3kN+bwj1xMiXdIaklrGHFTiEAAAGW7u9atgAABAMARzBFAiA4KMndf6lu
8C+yaJ7up6OP9YBciHo9bM7OJZHEAfOqEgIhAIjeizxsehNRGTnNWdJuAeiY6/KH
fc0KJYhNi1SQeB4oAHYAZBHEbKQS7KeJHKICLgC8q08oB9QeNSer6v7VA8l9zfAA
AAGW7u9aawAABAMARzBFAiEAnLSyDZ1Iqy98eeZkxpjcWgLwdBBiEIX/reb2o913
UY4CIGFo/sopJL65RQAm4Li2y2ZOUXjxrceVHQJa7Vc0tZzmAHYASZybad4dfOz8
Nt7Nh2SmuFuvCoeAGdFVUvvp6ynd+MMAAAGW7u9afAAABAMARzBFAiA6UQ2zTUdW
ppxjrPv7r/JDZxM+C/jwL5xz0/aAcvr6OQIhAJQHGasiXNHE8KA715WY2hH2ylqH
xFz3o/m9fsdQaMTgMA0GCSqGSIb3DQEBCwUAA4IBAQB5mp7XHwC3cdInFeJJmg2z
YNYJiK6tnUy84V+NjlPl8UAdmPQb2oPdoHmngbrSzurqOUjI8LUtRLrOHCu872Tb
tvivDVGTm+aL5sXwfximkRV4je6ivj23hHF/8q29MVjqCE2k8SGgPd9PR2htPivg
GIlja7c3nxZ3HML3xlqMwpqIhmeHjQKbP494c63H5cShg+ORm5OCjUbuEXpCN0tl
BGQ0BnYQk0N0pOV2lNHdSK+DTdApUASGia1MlDmXSZfdSTeefVrjGck6lEXZlCI0
iqqNCx8PLJ8saAB97rif7iiP1z1HWj4CQTzojxyaFkPvfUa3kJC5HCnE7OQjVIxh
-----END CERTIFICATE-----

BIN
server_certs/r2m01.cer.56 Normal file

Binary file not shown.

View File

@@ -1,46 +1,46 @@
-----BEGIN CERTIFICATE-----
MIIIOzCCByOgAwIBAgIQCHNhNIH5XVH5G3SANwHecTANBgkqhkiG9w0BAQsFADA8
MIIIPDCCBySgAwIBAgIQBsMDe40cFre0eD3AUSN7oTANBgkqhkiG9w0BAQsFADA8
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRwwGgYDVQQDExNBbWF6b24g
UlNBIDIwNDggTTAxMB4XDTI1MDkxOTAwMDAwMFoXDTI2MDgyMzIzNTk1OVowGzEZ
UlNBIDIwNDggTTAxMB4XDTI1MDUyMDAwMDAwMFoXDTI2MDUxNTIzNTk1OVowGzEZ
MBcGA1UEAxMQczMuYW1hem9uYXdzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMdxOeavAJSP5sHcShN1qqDR2LF9RtWaXtp5bdgNNKlgt4buDh3f
EGe60xX+RNSANTeyWtUZ8fhtQ7ugj7OoMZi+a2KczPFj3Q34OgM/8+290Z9joZ0p
wkKNwY03qEO6vlr9E/qA0Y9A6xZBD6QNUmD7jR4Etqq7jtBFgocdjZ6bgMqGQ8Uh
Ss5qapqokrKQrbKZLBHKRCqYGoKwgD1ciXiV6iXuJj+GXDmwte7MZAfFyg5OJngh
GKNCMdU38AYRGrfTWoVH5RC67JlfZMenQBK9sB/XnrB3kOkRbBR/spRYsZg+mbaR
Q7uyPL0hTHyDu1KAe8BpmxYoDrvkmkLPr58CAwEAAaOCBVgwggVUMB8GA1UdIwQY
MBaAFIG4DmOKiRIY5fo7O1CVn+blkBOFMB0GA1UdDgQWBBSLsv8vDlH1xvXIpmJ3
htLYjcrMszCCAokGA1UdEQSCAoAwggJ8ghBzMy5hbWF6b25hd3MuY29tghIqLnMz
LmFtYXpvbmF3cy5jb22CKCouczMtYWNjZXNzcG9pbnQudXMtZWFzdC0xLmFtYXpv
bmF3cy5jb22CJCouczMtY29udHJvbC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYIk
czMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgicqLnMzLWRlcHJl
Y2F0ZWQudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLHMzLWNvbnRyb2wuZHVhbHN0
YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgh0qLnMzLWV4dGVybmFsLTIuYW1h
em9uYXdzLmNvbYIaczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CMiouczMtYWNj
ZXNzcG9pbnQuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tghwqLnMz
LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgh0qLnMzLWV4dGVybmFsLTEuYW1hem9u
YXdzLmNvbYImKi5zMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22C
G3MzLWV4dGVybmFsLTIuYW1hem9uYXdzLmNvbYIiczMtY29udHJvbC51cy1lYXN0
LTEuYW1hem9uYXdzLmNvbYIbczMtZXh0ZXJuYWwtMS5hbWF6b25hd3MuY29tgiVz
My1kZXByZWNhdGVkLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgi4qLnMzLWNvbnRy
b2wuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tMBMGA1UdIAQMMAow
ADCCAQoCggEBAMkF0zlDqMKf/RCOFH1yRIsuCK3ZLbpIlhBL36oSgpkV6KWTLfxX
E+wJjmsREQiiQ59B06QHYYRXOnuvks4h52IpnUiQ9Q4rlZblZM+llDeOJ4KPT+xf
3WhbXND0o0+7dvjHRPQeA0b0LGvS0wVnESI+fHtPES2e7zLSVTyc9Cd8py5U1RYJ
zE5oG601rrEUEUBVOMa/BUTF5sYNioJpuPK6E803VJUwpQj6MFIG7gAHtm6smDPq
4L4eRAlKkgQL2mqaRMI1h9K6SpW/hJrKf2V9D8jk4dHwGFBYJICR4hyl16EK2pSH
2uTaXBO3ykOmYJdIeXMRgfPvMKvY7PqErO0CAwEAAaOCBVkwggVVMB8GA1UdIwQY
MBaAFIG4DmOKiRIY5fo7O1CVn+blkBOFMB0GA1UdDgQWBBQwNmD3HxPbjUExpM5y
rBUNT2tQKzCCAokGA1UdEQSCAoAwggJ8ghBzMy5hbWF6b25hd3MuY29tghIqLnMz
LmFtYXpvbmF3cy5jb22CJiouczMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25h
d3MuY29tgiRzMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CHCou
czMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CGnMzLnVzLWVhc3QtMS5hbWF6b25h
d3MuY29tgiQqLnMzLWNvbnRyb2wudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CInMz
LWNvbnRyb2wudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLiouczMtY29udHJvbC5k
dWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb22CLHMzLWNvbnRyb2wuZHVh
bHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgigqLnMzLWFjY2Vzc3BvaW50
LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tgjIqLnMzLWFjY2Vzc3BvaW50LmR1YWxz
dGFjay51cy1lYXN0LTEuYW1hem9uYXdzLmNvbYInKi5zMy1kZXByZWNhdGVkLnVz
LWVhc3QtMS5hbWF6b25hd3MuY29tgiVzMy1kZXByZWNhdGVkLnVzLWVhc3QtMS5h
bWF6b25hd3MuY29tghtzMy1leHRlcm5hbC0xLmFtYXpvbmF3cy5jb22CHSouczMt
ZXh0ZXJuYWwtMS5hbWF6b25hd3MuY29tghtzMy1leHRlcm5hbC0yLmFtYXpvbmF3
cy5jb22CHSouczMtZXh0ZXJuYWwtMi5hbWF6b25hd3MuY29tMBMGA1UdIAQMMAow
CAYGZ4EMAQIBMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
KwYBBQUHAwIwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5yMm0wMS5hbWF6
b250cnVzdC5jb20vcjJtMDEuY3JsMHUGCCsGAQUFBwEBBGkwZzAtBggrBgEFBQcw
AYYhaHR0cDovL29jc3AucjJtMDEuYW1hem9udHJ1c3QuY29tMDYGCCsGAQUFBzAC
hipodHRwOi8vY3J0LnIybTAxLmFtYXpvbnRydXN0LmNvbS9yMm0wMS5jZXIwDAYD
VR0TAQH/BAIwADCCAX0GCisGAQQB1nkCBAIEggFtBIIBaQFnAHYA2AlVO5RPev/I
FhlvlE+Fq7D4/F6HVSYPFdEucrtFSxQAAAGZY2zFywAABAMARzBFAiEA52TfXblf
xGMn7zs62yXq7rXB/ccKutSfyoReVaLtluACIFL9G5g8WzioAe/Tmx0cJjYXBzof
9go+a5TjVIY4bpnnAHYAwjF+V0UZo0XufzjespBB68fCIVoiv3/Vta12mtkOUs0A
AAGZY2zFywAABAMARzBFAiAdPbpyBei1fmph20ZWi1ZN7nl9b6EDX0s/gYxduL7k
CQIhAMeQp4B56jeit+b3akK3MHyTQoZBgR2CZMBZI6QVk5DUAHUAlE5Dh/rswe+B
8xkkJqgYZQHH0184AgE/cmd9VTcuGdgAAAGZY2zF4AAABAMARjBEAiBpEesssZJD
0SnUOe2Alz/5nGHs/Usxgzgz/xrMmEAXwAIgI90hHJajlzg30MZC3RKkXV8wezmC
pK+h+FLlSvMOUVowDQYJKoZIhvcNAQELBQADggEBAMMItDbq4GvNzuM8t2iBx90Z
F0hcsivxMOHbbxvBRrLtEYjY5wyvmGdWF2t24YFaYzyEMb0qX0YLxLGpoJCf5vIJ
olRHHgdDdkxg354SVQ4+SB1SvpJlAjyzqAGD4XQHAU3t0+jK+9OfJp8Zh57Z3jzI
zhA5ILi5hT3mW3hbHaNfvDpiauB6Sm9T0jc7853Msuh17LvABsIYlt2gVx48ivJc
oLmsInswJM2kWvD8WGTc0sG0wQfT6GNxEGG9anP3odTgdPUNnm8OKqW8nabzmhfu
sMKmxp3ShPpT0KiO5gBlGsMkDKu0+xKB0QjGaRoRbFC/9f0if9jQX5Hiz/xxpS4=
VR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHYADleUvPOuqT4z
GyyZB7P3kN+bwj1xMiXdIaklrGHFTiEAAAGW7u9atgAABAMARzBFAiA4KMndf6lu
8C+yaJ7up6OP9YBciHo9bM7OJZHEAfOqEgIhAIjeizxsehNRGTnNWdJuAeiY6/KH
fc0KJYhNi1SQeB4oAHYAZBHEbKQS7KeJHKICLgC8q08oB9QeNSer6v7VA8l9zfAA
AAGW7u9aawAABAMARzBFAiEAnLSyDZ1Iqy98eeZkxpjcWgLwdBBiEIX/reb2o913
UY4CIGFo/sopJL65RQAm4Li2y2ZOUXjxrceVHQJa7Vc0tZzmAHYASZybad4dfOz8
Nt7Nh2SmuFuvCoeAGdFVUvvp6ynd+MMAAAGW7u9afAAABAMARzBFAiA6UQ2zTUdW
ppxjrPv7r/JDZxM+C/jwL5xz0/aAcvr6OQIhAJQHGasiXNHE8KA715WY2hH2ylqH
xFz3o/m9fsdQaMTgMA0GCSqGSIb3DQEBCwUAA4IBAQB5mp7XHwC3cdInFeJJmg2z
YNYJiK6tnUy84V+NjlPl8UAdmPQb2oPdoHmngbrSzurqOUjI8LUtRLrOHCu872Tb
tvivDVGTm+aL5sXwfximkRV4je6ivj23hHF/8q29MVjqCE2k8SGgPd9PR2htPivg
GIlja7c3nxZ3HML3xlqMwpqIhmeHjQKbP494c63H5cShg+ORm5OCjUbuEXpCN0tl
BGQ0BnYQk0N0pOV2lNHdSK+DTdApUASGia1MlDmXSZfdSTeefVrjGck6lEXZlCI0
iqqNCx8PLJ8saAB97rif7iiP1z1HWj4CQTzojxyaFkPvfUa3kJC5HCnE7OQjVIxh
-----END CERTIFICATE-----