<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Ashus.ashus.net - Guides / Návody]]></title>
		<link>https://ashus.ashus.net/</link>
		<description><![CDATA[Ashus.ashus.net - https://ashus.ashus.net]]></description>
		<pubDate>Fri, 03 Apr 2026 22:32:19 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Strategy to win special events in Need For Speed No Limits]]></title>
			<link>https://ashus.ashus.net/thread-194.html</link>
			<pubDate>Sun, 26 Sep 2021 20:26:57 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-194.html</guid>
			<description><![CDATA[I've gradually developed the following strategy to win any special event in NFS No Limits.<br />
Of course sometimes you need more skill, sometimes you need luck and it never hurts to have some gold from Daily assignments if you lack skill or luck (500 gold should be enough reserve at most times).<br />
<br />
In all races you need to drift/draft/near miss at all times to get maximum credits to make things easier. Remember that drifting almost straight ahead doesn't slow you down and earns you nitro. If you can choose to use nitro a little bit later on straight roads or to drift sharper corners, do that; otherwise use nitro straight away.<br />
<br />
If you are racing a special event from the Vault, there are no credits when you lose a race. In live events though, find a race of the day that gives you most credits by drifting and drafting at the same time behind another racer (fail2win). I found the best to be nitro rush with multiple racers (drafting without using collected nitro) or rush hour. Fail on that repeatedly with at least 1500 credits per try.<br />
<br />
Repeat races retries can be replayed another day counting from GMT midnight, so in Czechia it is at 1:00 in the night when CET is active and 2:00 when CEST is active (central european summer time). Start the event at 15:30 GMT (17:30 CEST).<br />
<br />
The big picture is you want to finish with a car upgraded completely to higher color. That saves you the trouble of having to grind enough materials and a lot of cash to upgrade from one color to another. In every event you upgrade the whole set once and receive 2 upgrades kit. Usually they are from acceleration and nitro category. Take a note which upgrade parts you already bought, from day 4 you might get confused by looking in storage as bought ones get mixed up with the ones you won. Use all available tickets before you go to sleep and do the same when you wake up; you need as much credits as possible.<br />
<br />
Strategies differ a little for live and vault events.<br />
Live events:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 1 and 2</span>: Find the best fail2win race of the day, don't finish the day and do not repeat the last race in case you win by accident. Repeat fail2win race. Now look into store every hour if there is an upgrade kit. If you see one you haven't already bought and you have at least 8000 credits, buy it and pay the rest with gold. As the day ends, finish races successfully by taking into account you want to start collecting tickets and have 4 of them ready when another day opens. Day should be completed with 0 tickets at 12:00 GMT (14:00 CEST).<br />
<br />
Vault events:<br />
<span style="font-weight: bold;" class="mycode_b">Day 1 and 2</span>: Maximize the credits and buy one upgrade kit with credits and gold. You often don't need to insert won materials at the end of day as you want to spend as little gold as possible.<br />
<br />
All events:<br />
<span style="font-weight: bold;" class="mycode_b">Day 3</span>: There are first repeatable races here. Unlock first two replayable races and repeat them until GMT midnight or you run out of them. Keep on looking into store for non-bought upgrade kits. When you wake up the next day, finish the day and then find the best fail2win race among repeatable races. Finish it only twice and keep failing until you need to start collecting tickets like in day 1. If you have exessive amount of credits, you can start buying flywheels or thrust sleeves. Prioritize speed category to make your races easier and to overcome PR locks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 4</span>: There are more repeatable races from now on. You no longer need fail2win, you can just keep winning repeatables from day 3 when you run out of those in day 4. Keep looking for missing upgrade kits. Prioritize speed upgrades and 4000 credits gray materials.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 5 and 6</span>: Just race. Now you need to focus on balancing the upgrade states of all parts. When given a choice, repeat race from later days as they give more credit. If they are too difficult (eg. breakouts with requirement to takedown cops) and the risk of losing is too great, repeat any race with required materials in them. Keep looking for missing upgrade kits.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 7</span>: This day gets unlocked with day 6. Start it as soon as you can. Examine awards for races in this day. There are some upgrade kits - you don't need to look out for those anymore. When you hit the PR lock in half of this day, look ahead for awards in races and determine what number of what material you still miss. Go repeat those races to maximize the probability you wouldn't need to buy them while not having more of them than needed to upgrade color. Also use any credits to buy any materials you need. Remember - at GMT midnight, repeatable races get reset. Gradually finish races and wait before the last race. Complete upgrades for all parts and finish with flying colors.<br />
<br />
If you stumble upon an idiotically unwinnable race, you must not waste too much time on it. If the race looks to be winnable after severals repeats, do that and even buy tickets. It is usually cheaper than skipping race with gold. Sometimes you just need a faster car, so don't hesitate and repeat some older races to upgrade sooner and return to the story after that.<br />
<br />
This strategy can make you win the 7-day event in 6 days and one morning (6.5 days). Depending on how much time left in the event you have, buy more tickets. If you haven't made a big error, do what you can to finish the event as you don't want to waste another week of your life, even buy some materials with gold or finish without completely upgraded color.<br />
<br />
Lastly, group a live event with a vault one when possible and play them together. That way you can rest every other week and not look for upgrade kits in your sleep.]]></description>
			<content:encoded><![CDATA[I've gradually developed the following strategy to win any special event in NFS No Limits.<br />
Of course sometimes you need more skill, sometimes you need luck and it never hurts to have some gold from Daily assignments if you lack skill or luck (500 gold should be enough reserve at most times).<br />
<br />
In all races you need to drift/draft/near miss at all times to get maximum credits to make things easier. Remember that drifting almost straight ahead doesn't slow you down and earns you nitro. If you can choose to use nitro a little bit later on straight roads or to drift sharper corners, do that; otherwise use nitro straight away.<br />
<br />
If you are racing a special event from the Vault, there are no credits when you lose a race. In live events though, find a race of the day that gives you most credits by drifting and drafting at the same time behind another racer (fail2win). I found the best to be nitro rush with multiple racers (drafting without using collected nitro) or rush hour. Fail on that repeatedly with at least 1500 credits per try.<br />
<br />
Repeat races retries can be replayed another day counting from GMT midnight, so in Czechia it is at 1:00 in the night when CET is active and 2:00 when CEST is active (central european summer time). Start the event at 15:30 GMT (17:30 CEST).<br />
<br />
The big picture is you want to finish with a car upgraded completely to higher color. That saves you the trouble of having to grind enough materials and a lot of cash to upgrade from one color to another. In every event you upgrade the whole set once and receive 2 upgrades kit. Usually they are from acceleration and nitro category. Take a note which upgrade parts you already bought, from day 4 you might get confused by looking in storage as bought ones get mixed up with the ones you won. Use all available tickets before you go to sleep and do the same when you wake up; you need as much credits as possible.<br />
<br />
Strategies differ a little for live and vault events.<br />
Live events:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 1 and 2</span>: Find the best fail2win race of the day, don't finish the day and do not repeat the last race in case you win by accident. Repeat fail2win race. Now look into store every hour if there is an upgrade kit. If you see one you haven't already bought and you have at least 8000 credits, buy it and pay the rest with gold. As the day ends, finish races successfully by taking into account you want to start collecting tickets and have 4 of them ready when another day opens. Day should be completed with 0 tickets at 12:00 GMT (14:00 CEST).<br />
<br />
Vault events:<br />
<span style="font-weight: bold;" class="mycode_b">Day 1 and 2</span>: Maximize the credits and buy one upgrade kit with credits and gold. You often don't need to insert won materials at the end of day as you want to spend as little gold as possible.<br />
<br />
All events:<br />
<span style="font-weight: bold;" class="mycode_b">Day 3</span>: There are first repeatable races here. Unlock first two replayable races and repeat them until GMT midnight or you run out of them. Keep on looking into store for non-bought upgrade kits. When you wake up the next day, finish the day and then find the best fail2win race among repeatable races. Finish it only twice and keep failing until you need to start collecting tickets like in day 1. If you have exessive amount of credits, you can start buying flywheels or thrust sleeves. Prioritize speed category to make your races easier and to overcome PR locks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 4</span>: There are more repeatable races from now on. You no longer need fail2win, you can just keep winning repeatables from day 3 when you run out of those in day 4. Keep looking for missing upgrade kits. Prioritize speed upgrades and 4000 credits gray materials.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 5 and 6</span>: Just race. Now you need to focus on balancing the upgrade states of all parts. When given a choice, repeat race from later days as they give more credit. If they are too difficult (eg. breakouts with requirement to takedown cops) and the risk of losing is too great, repeat any race with required materials in them. Keep looking for missing upgrade kits.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Day 7</span>: This day gets unlocked with day 6. Start it as soon as you can. Examine awards for races in this day. There are some upgrade kits - you don't need to look out for those anymore. When you hit the PR lock in half of this day, look ahead for awards in races and determine what number of what material you still miss. Go repeat those races to maximize the probability you wouldn't need to buy them while not having more of them than needed to upgrade color. Also use any credits to buy any materials you need. Remember - at GMT midnight, repeatable races get reset. Gradually finish races and wait before the last race. Complete upgrades for all parts and finish with flying colors.<br />
<br />
If you stumble upon an idiotically unwinnable race, you must not waste too much time on it. If the race looks to be winnable after severals repeats, do that and even buy tickets. It is usually cheaper than skipping race with gold. Sometimes you just need a faster car, so don't hesitate and repeat some older races to upgrade sooner and return to the story after that.<br />
<br />
This strategy can make you win the 7-day event in 6 days and one morning (6.5 days). Depending on how much time left in the event you have, buy more tickets. If you haven't made a big error, do what you can to finish the event as you don't want to waste another week of your life, even buy some materials with gold or finish without completely upgraded color.<br />
<br />
Lastly, group a live event with a vault one when possible and play them together. That way you can rest every other week and not look for upgrade kits in your sleep.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to add an OpenWRT device to UniFi network with 802.11r Fast Transition roaming]]></title>
			<link>https://ashus.ashus.net/thread-188.html</link>
			<pubDate>Fri, 02 Apr 2021 03:21:31 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-188.html</guid>
			<description><![CDATA[This assumes the following scenario:<br />
<ul class="mycode_list"><li>you have an existing UniFi network of one or more APs with Fast roaming enabled<br />
</li>
<li>you also want to utilize your central router with modern wi-fi support with 802.11ac (eg. TP-Link Archer C7) and save on buying an extra AP<br />
</li>
<li>you want to roam between APs with minimal outages<br />
</li>
</ul>
First use your UniFi controller, use Devices page, Manage an AP, click Debug to open a Terminal. Next step depends on your firmware. Basically type <br />
<span style="font-style: italic;" class="mycode_i">ps -w|grep hostapd</span> and look at the processes. There are configuration files used for each SSID. Look into them by using <span style="font-style: italic;" class="mycode_i">cat /etc/aaa1.cfg</span> and copy the configuration to a text file in your computer. Each network configuration is different, while the same SSID on different radios have the same mobility domain and keys.<br />
<br />
Now configure your Wi-Fi network in OpenWRT LuCI. At the time of writing this, OpenWRT version was 19.07.7. The resulting configuration should look like this in your <span style="font-style: italic;" class="mycode_i">/etc/config/wireless</span> file.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>option encryption 'psk2+ccmp'<br />
option ieee80211r '1'<br />
option ssid '&lt;YOUR_SSID&gt;'<br />
option key '&lt;YOUR_KEY&gt;'<br />
option mobility_domain '&lt;YOUR_MOBILITY_DOMAIN&gt;'<br />
option pmk_r1_push '1'<br />
option ft_over_ds '0'<br />
option reassociation_deadline '3000'<br />
option nasid '&lt;YOUR_IAPP_KEY&gt;'<br />
list r0kh '&lt;YOUR_R0KH_WITH_COMMAS_INSTEAD_OF_SPACES&gt;'<br />
list r1kh '&lt;YOUR_R1KH_WITH_COMMAS_INSTEAD_OF_SPACES&gt;'<br />
option skip_inactivity_poll '1'<br />
option wpa_disable_eapol_key_retries '1'<br />
option ft_psk_generate_local '1'<br />
option short_preamble '0'<br />
option ieee80211w '1'</code></div></div><br />
This works OK with this UniFi network configuration:<br />
<!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/attachtypes/image.png" title="PNG Image" alt=".png" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=177" target="_blank">unifi-configuration.png</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">76,03 KB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">2425</span></span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
This is verified to work. I learned it the hard way: I configured the channels to the same number on both APs, booted up a live Kali Linux, switched NIC to monitor mode, selected that channel and captured packets using Wireshark. Should you need to do this debugging as well, look for packets marked as Probe Response and carefully compare that packet from UniFI AP with the one from OpenWRT, preferably in two windows side-by-side. There will be many different capabilities, but they mostly don't matter. Unlike some of them, that <span style="font-weight: bold;" class="mycode_b">do</span> matter.<br />
<br />
Also, initially I thought it is desirable to have the same authentication capabilities displayed in <a href="https://play.google.com/store/apps/details?id=com.vrem.wifianalyzer" target="_blank" rel="noopener" class="mycode_url">WiFi Analyzer</a> on my phone. I was mistaken, that Management Frame Protection (ieee80211w) needs to match even though it extends the capabilities with SHA256 strings. It is probably a feature in newer hostapd version present on OpenWRT.<br />
<br />
To test roaming working properly, you can use <a href="https://play.google.com/store/apps/details?id=com.ubnt.usurvey" target="_blank" rel="noopener" class="mycode_url">Ubiquiti WiFiMan</a> from Google Play store. Naturally the roaming doesn't appear in UniFi Controller Alerts, because that is UniFi proprietary add-on.<br />
<br />
As a side-note, I was genuinely surprised to see UniFi firmware is based on old OpenWRT version 17.x (when it was forked to LEDE).<br />
<br />
Sadly, this short guide took a lot of time to make as it didn't want to work until the very end. The main thing that kept me going was the idea, that "<span style="font-style: italic;" class="mycode_i">It's just an old OpenWRT, it is possible, unless...</span>"]]></description>
			<content:encoded><![CDATA[This assumes the following scenario:<br />
<ul class="mycode_list"><li>you have an existing UniFi network of one or more APs with Fast roaming enabled<br />
</li>
<li>you also want to utilize your central router with modern wi-fi support with 802.11ac (eg. TP-Link Archer C7) and save on buying an extra AP<br />
</li>
<li>you want to roam between APs with minimal outages<br />
</li>
</ul>
First use your UniFi controller, use Devices page, Manage an AP, click Debug to open a Terminal. Next step depends on your firmware. Basically type <br />
<span style="font-style: italic;" class="mycode_i">ps -w|grep hostapd</span> and look at the processes. There are configuration files used for each SSID. Look into them by using <span style="font-style: italic;" class="mycode_i">cat /etc/aaa1.cfg</span> and copy the configuration to a text file in your computer. Each network configuration is different, while the same SSID on different radios have the same mobility domain and keys.<br />
<br />
Now configure your Wi-Fi network in OpenWRT LuCI. At the time of writing this, OpenWRT version was 19.07.7. The resulting configuration should look like this in your <span style="font-style: italic;" class="mycode_i">/etc/config/wireless</span> file.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>option encryption 'psk2+ccmp'<br />
option ieee80211r '1'<br />
option ssid '&lt;YOUR_SSID&gt;'<br />
option key '&lt;YOUR_KEY&gt;'<br />
option mobility_domain '&lt;YOUR_MOBILITY_DOMAIN&gt;'<br />
option pmk_r1_push '1'<br />
option ft_over_ds '0'<br />
option reassociation_deadline '3000'<br />
option nasid '&lt;YOUR_IAPP_KEY&gt;'<br />
list r0kh '&lt;YOUR_R0KH_WITH_COMMAS_INSTEAD_OF_SPACES&gt;'<br />
list r1kh '&lt;YOUR_R1KH_WITH_COMMAS_INSTEAD_OF_SPACES&gt;'<br />
option skip_inactivity_poll '1'<br />
option wpa_disable_eapol_key_retries '1'<br />
option ft_psk_generate_local '1'<br />
option short_preamble '0'<br />
option ieee80211w '1'</code></div></div><br />
This works OK with this UniFi network configuration:<br />
<!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/attachtypes/image.png" title="PNG Image" alt=".png" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=177" target="_blank">unifi-configuration.png</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">76,03 KB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">2425</span></span>
</div>
<!-- end: postbit_attachments_attachment --><br />
<br />
This is verified to work. I learned it the hard way: I configured the channels to the same number on both APs, booted up a live Kali Linux, switched NIC to monitor mode, selected that channel and captured packets using Wireshark. Should you need to do this debugging as well, look for packets marked as Probe Response and carefully compare that packet from UniFI AP with the one from OpenWRT, preferably in two windows side-by-side. There will be many different capabilities, but they mostly don't matter. Unlike some of them, that <span style="font-weight: bold;" class="mycode_b">do</span> matter.<br />
<br />
Also, initially I thought it is desirable to have the same authentication capabilities displayed in <a href="https://play.google.com/store/apps/details?id=com.vrem.wifianalyzer" target="_blank" rel="noopener" class="mycode_url">WiFi Analyzer</a> on my phone. I was mistaken, that Management Frame Protection (ieee80211w) needs to match even though it extends the capabilities with SHA256 strings. It is probably a feature in newer hostapd version present on OpenWRT.<br />
<br />
To test roaming working properly, you can use <a href="https://play.google.com/store/apps/details?id=com.ubnt.usurvey" target="_blank" rel="noopener" class="mycode_url">Ubiquiti WiFiMan</a> from Google Play store. Naturally the roaming doesn't appear in UniFi Controller Alerts, because that is UniFi proprietary add-on.<br />
<br />
As a side-note, I was genuinely surprised to see UniFi firmware is based on old OpenWRT version 17.x (when it was forked to LEDE).<br />
<br />
Sadly, this short guide took a lot of time to make as it didn't want to work until the very end. The main thing that kept me going was the idea, that "<span style="font-style: italic;" class="mycode_i">It's just an old OpenWRT, it is possible, unless...</span>"]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to calibrate low-end 5.1 speakers volume using Windows controls]]></title>
			<link>https://ashus.ashus.net/thread-180.html</link>
			<pubDate>Sun, 07 May 2017 01:30:07 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-180.html</guid>
			<description><![CDATA[This is a guide to calibrate levels of your cheap 5.1 analog surround sound setup on a Windows machine. If you have an expensive setup, there is YPAO or other automatic setup system with microphone. However to emulate this feature for free with any speakers, this is one way to go. It is especially useful if you go with cables around the furniture on in walls to hide them. The signal may be lost and one rear side will be louder than the other.<br />
<br />
You will need these media files:<br />
<!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=173" target="_blank">PinkNoise 7.1.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">3,53 MB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">0</span></span>
</div>
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=172" target="_blank">PinkNoise 5.1.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">2,65 MB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">3</span></span>
</div>
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=171" target="_blank">PinkNoise 2.0.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">891,58 KB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">0</span></span>
</div>
<!-- end: postbit_attachments_attachment --><br />
They all are 1 minute generated Pink Noise 500 - 2000Hz with various track numbers. Select the one you need to match your setup.<br />
<br />
Also you will need a smartphone and this app: <a href="https://play.google.com/store/apps/details?id=com.gamebasic.decibel" target="_blank" rel="noopener" class="mycode_url">Sound Meter</a> or a dB loudness meter.<br />
<br />
For getting sane environment please use <a href="https://mpc-hc.org/" target="_blank" rel="noopener" class="mycode_url">Media Player Classic Home Cinema</a> and after opening a video right click the dark window and select Filters - LAV Audio Decoder. Verify, that you have the checkbox Enable mixing under Mixer tab turned off.<br />
<br />
Follow these steps:<br />
<br />
<ol type="1" class="mycode_list"><li>Make sure all speakers are set up at fixed posititons according to numerous guides on the net. Make sure all speakers are connected and after opening audio devices you have the correct speaker count set under Configuration button.<br />
</li>
<li>Open up audio devices, click on connected speakers and Properties. On Levels tab click the Balance button.<br />
</li>
<li>Start your DB meter on your phone and place it on a stool to a position of your ears, right in front of you. You will need a quiet environment, so close the door or tell your roomie to keep it down if you haven't already.<br />
</li>
<li>Prepare the test audio file in MPC-HC and play it (you may consider enabling Loop).<br />
</li>
<li>Set your speakers volume to medium (not too silent and not reaching their limits).<br />
</li>
<li>Put all sliders to 0, try one by one to identify which speakers are used.<br />
</li>
<li>For all active speakers (except subwoofer) repeat this: put only the slider of one speaker to 100, wait for a few seconds and mark down the loudness in dB on a piece of paper.<br />
</li>
<li>Now look at your paper and find the lowest number (57dB for me). This is the loudness you need to match on all other speakers.<br />
</li>
<li>Again go one by one and move the slider to a position in which the loudness is matched while all other sliders are off. Mark these results to a piece of paper.<br />
</li>
<li>Set all sliders to positions according the results on the paper you just made.<br />
</li>
<li>Subwoofer should be set by ear and to your liking preferably while watching a movie.<br />
</li>
<li>You are done. Make sure nobody adjusts balance or surround knob on your subwoofer if it is present, you'd have to repeat this.<br />
</li>
</ol>
]]></description>
			<content:encoded><![CDATA[This is a guide to calibrate levels of your cheap 5.1 analog surround sound setup on a Windows machine. If you have an expensive setup, there is YPAO or other automatic setup system with microphone. However to emulate this feature for free with any speakers, this is one way to go. It is especially useful if you go with cables around the furniture on in walls to hide them. The signal may be lost and one rear side will be louder than the other.<br />
<br />
You will need these media files:<br />
<!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=173" target="_blank">PinkNoise 7.1.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">3,53 MB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">0</span></span>
</div>
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=172" target="_blank">PinkNoise 5.1.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">2,65 MB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">3</span></span>
</div>
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<div style="padding:4px 0px;"><span class="inline-block vmiddle"><!-- start: attachment_icon -->
<img src="https://ashus.ashus.net/images/bootbb/attachtypes/unknown.png" title="Unknown" alt=".mkv" />
<!-- end: attachment_icon --></span>
<a  class="vmiddle inline-block" href="attachment.php?aid=171" target="_blank">PinkNoise 2.0.mkv</a> <span class="smalltext float_right">Size: <span class="inline-block vmiddle">891,58 KB</span>&nbsp;&nbsp;Downloads: <span class="inline-block vmiddle">0</span></span>
</div>
<!-- end: postbit_attachments_attachment --><br />
They all are 1 minute generated Pink Noise 500 - 2000Hz with various track numbers. Select the one you need to match your setup.<br />
<br />
Also you will need a smartphone and this app: <a href="https://play.google.com/store/apps/details?id=com.gamebasic.decibel" target="_blank" rel="noopener" class="mycode_url">Sound Meter</a> or a dB loudness meter.<br />
<br />
For getting sane environment please use <a href="https://mpc-hc.org/" target="_blank" rel="noopener" class="mycode_url">Media Player Classic Home Cinema</a> and after opening a video right click the dark window and select Filters - LAV Audio Decoder. Verify, that you have the checkbox Enable mixing under Mixer tab turned off.<br />
<br />
Follow these steps:<br />
<br />
<ol type="1" class="mycode_list"><li>Make sure all speakers are set up at fixed posititons according to numerous guides on the net. Make sure all speakers are connected and after opening audio devices you have the correct speaker count set under Configuration button.<br />
</li>
<li>Open up audio devices, click on connected speakers and Properties. On Levels tab click the Balance button.<br />
</li>
<li>Start your DB meter on your phone and place it on a stool to a position of your ears, right in front of you. You will need a quiet environment, so close the door or tell your roomie to keep it down if you haven't already.<br />
</li>
<li>Prepare the test audio file in MPC-HC and play it (you may consider enabling Loop).<br />
</li>
<li>Set your speakers volume to medium (not too silent and not reaching their limits).<br />
</li>
<li>Put all sliders to 0, try one by one to identify which speakers are used.<br />
</li>
<li>For all active speakers (except subwoofer) repeat this: put only the slider of one speaker to 100, wait for a few seconds and mark down the loudness in dB on a piece of paper.<br />
</li>
<li>Now look at your paper and find the lowest number (57dB for me). This is the loudness you need to match on all other speakers.<br />
</li>
<li>Again go one by one and move the slider to a position in which the loudness is matched while all other sliders are off. Mark these results to a piece of paper.<br />
</li>
<li>Set all sliders to positions according the results on the paper you just made.<br />
</li>
<li>Subwoofer should be set by ear and to your liking preferably while watching a movie.<br />
</li>
<li>You are done. Make sure nobody adjusts balance or surround knob on your subwoofer if it is present, you'd have to repeat this.<br />
</li>
</ol>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[GIT global configuration for Windows]]></title>
			<link>https://ashus.ashus.net/thread-179.html</link>
			<pubDate>Wed, 19 Apr 2017 18:22:27 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-179.html</guid>
			<description><![CDATA[Fine setting for keeping unwanted changes to a minimum.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>git config --global http.sslVerify false<br />
git config --global core.autocrlf false<br />
git config --global pull.rebase true<br />
git config --global credential.helper wincred</code></div></div>]]></description>
			<content:encoded><![CDATA[Fine setting for keeping unwanted changes to a minimum.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>git config --global http.sslVerify false<br />
git config --global core.autocrlf false<br />
git config --global pull.rebase true<br />
git config --global credential.helper wincred</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to insert separately styled HTML e-mail to heavily styled page]]></title>
			<link>https://ashus.ashus.net/thread-178.html</link>
			<pubDate>Tue, 07 Mar 2017 15:15:33 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-178.html</guid>
			<description><![CDATA[Use iframe like this!<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;iframe id="unstyled-text" sandbox="allow-scripts allow-popups allow-same-origin" srcdoc="&lt;?= htmlspecialchars('&lt;head&gt;&lt;base target="_blank"&gt;&lt;/head&gt;&lt;body&gt;' . &#36;html . '&lt;/body&gt;') ?&gt;"&gt;&lt;/iframe&gt;<br />
&lt;script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#36;(function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// hack for IE and browsers without srcdoc support<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var &#36;u = &#36;('#unstyled-text');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var &#36;body = &#36;u.contents().find('body');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;body.html() == '')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;body.parent().html(&#36;u.attr('srcdoc'));<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&lt;/script&gt;</code></div></div>]]></description>
			<content:encoded><![CDATA[Use iframe like this!<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&lt;iframe id="unstyled-text" sandbox="allow-scripts allow-popups allow-same-origin" srcdoc="&lt;?= htmlspecialchars('&lt;head&gt;&lt;base target="_blank"&gt;&lt;/head&gt;&lt;body&gt;' . &#36;html . '&lt;/body&gt;') ?&gt;"&gt;&lt;/iframe&gt;<br />
&lt;script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#36;(function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// hack for IE and browsers without srcdoc support<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var &#36;u = &#36;('#unstyled-text');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var &#36;body = &#36;u.contents().find('body');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (&#36;body.html() == '')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;body.parent().html(&#36;u.attr('srcdoc'));<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&lt;/script&gt;</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to find wide elements when making a web adaptive / responsive]]></title>
			<link>https://ashus.ashus.net/thread-177.html</link>
			<pubDate>Wed, 14 Sep 2016 22:39:14 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-177.html</guid>
			<description><![CDATA[Provided you have jQuery, open you dev. tools, adjust the window to designated dimensions and put this to the console in your browser:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;(':visible').each(function(){var w = &#36;(this).outerWidth(); if (w&lt;=360) return; console.log(w, this)})</code></div></div><br />
You can adjust the 360 px number to any number you need for your breakpoint.]]></description>
			<content:encoded><![CDATA[Provided you have jQuery, open you dev. tools, adjust the window to designated dimensions and put this to the console in your browser:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;(':visible').each(function(){var w = &#36;(this).outerWidth(); if (w&lt;=360) return; console.log(w, this)})</code></div></div><br />
You can adjust the 360 px number to any number you need for your breakpoint.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Synchronization of config files and documents among several PCs]]></title>
			<link>https://ashus.ashus.net/thread-174.html</link>
			<pubDate>Sat, 15 Aug 2015 21:04:45 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-174.html</guid>
			<description><![CDATA[At first I thought about creating a file synchronization tool in PHP myself, but then I read <a href="http://havrl.blogspot.com/2013/08/synchronization-algorithm-for.html" target="_blank" rel="noopener" class="mycode_url">about synchronization</a> and it looked like I'd have to spend a whole lot of my time fixing some special cases, so I googled more and found about <a href="http://sparkleshare.org/" target="_blank" rel="noopener" class="mycode_url">SparkleShare</a>. The main advantage is that it can use your own server - no data are sent to clouds (NSA), all data are on all PCs, not just opened remotely on the server (or in some cache).<br />
<br />
<h2>SparkleShare</h2><br />
You can create a GIT repository on your own linux server using included <span style="font-style: italic;" class="mycode_i">dazzle</span> tool. This tool installs GIT if needed, creates a new user <span style="font-style: italic;" class="mycode_i">storage</span> for this purpose and adds authorized keys created on client machines. It can also add more trusted key fignerprints - more clients. And finally it creates shares (projects). After a share is created, you can "mount" it on your client machines. SparkleShare watches for changes and after they are saved completely, they are automatically transferred to the server.<br />
<br />
Now for the fun part.. download and install <a href="http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html" target="_blank" rel="noopener" class="mycode_url">Link Shell Extension</a> and use hardlinks to mirror requested config files to app data locations. On other machines, remove the current config files and create hardlinks to the mounted locations. The only downside is you can't synchronize Windows registry changes, so if you plan to synchronize eg. PuTTY, you need to use a portable version, that exports registry to REG file when the app is closed. IMO small apps like PuTTY portable can be mirrored whole, not just the reg file; also the updates are pretty easy - you just update once and other machines are updated as well.]]></description>
			<content:encoded><![CDATA[At first I thought about creating a file synchronization tool in PHP myself, but then I read <a href="http://havrl.blogspot.com/2013/08/synchronization-algorithm-for.html" target="_blank" rel="noopener" class="mycode_url">about synchronization</a> and it looked like I'd have to spend a whole lot of my time fixing some special cases, so I googled more and found about <a href="http://sparkleshare.org/" target="_blank" rel="noopener" class="mycode_url">SparkleShare</a>. The main advantage is that it can use your own server - no data are sent to clouds (NSA), all data are on all PCs, not just opened remotely on the server (or in some cache).<br />
<br />
<h2>SparkleShare</h2><br />
You can create a GIT repository on your own linux server using included <span style="font-style: italic;" class="mycode_i">dazzle</span> tool. This tool installs GIT if needed, creates a new user <span style="font-style: italic;" class="mycode_i">storage</span> for this purpose and adds authorized keys created on client machines. It can also add more trusted key fignerprints - more clients. And finally it creates shares (projects). After a share is created, you can "mount" it on your client machines. SparkleShare watches for changes and after they are saved completely, they are automatically transferred to the server.<br />
<br />
Now for the fun part.. download and install <a href="http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html" target="_blank" rel="noopener" class="mycode_url">Link Shell Extension</a> and use hardlinks to mirror requested config files to app data locations. On other machines, remove the current config files and create hardlinks to the mounted locations. The only downside is you can't synchronize Windows registry changes, so if you plan to synchronize eg. PuTTY, you need to use a portable version, that exports registry to REG file when the app is closed. IMO small apps like PuTTY portable can be mirrored whole, not just the reg file; also the updates are pretty easy - you just update once and other machines are updated as well.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Find apps blocking APK install button]]></title>
			<link>https://ashus.ashus.net/thread-167.html</link>
			<pubDate>Tue, 07 Apr 2015 20:31:22 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-167.html</guid>
			<description><![CDATA[I had a problem the other day.. Android has a protection against malicious apps doing overlay (screen filters, buttons etc); when installing custom APK, you <span style="font-weight: bold;" class="mycode_b">can't press Install</span> button. On my phone I had to install an app to list all apps having the overlay permission, specifically this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Advanced Permission Manager<br />
https://play.google.com/store/apps/details?id=com.gmail.heagoo.pmaster</code></div></div>After filtering which apps could do that, I was able to pinpoint the problem app and use Titanium Backup to freeze it (check if it is the guilty one).<br />
<br />
I'd be happy if you could share what apps you've found out could do that for others to know.<br />
Thanks.<br />
In my case it was Lux Auto Brightness (1.75) [CM 12.1/Android 5.1]; after I upgraded it, the problem has disappeared (it disables itself automatically when an installation is detected).]]></description>
			<content:encoded><![CDATA[I had a problem the other day.. Android has a protection against malicious apps doing overlay (screen filters, buttons etc); when installing custom APK, you <span style="font-weight: bold;" class="mycode_b">can't press Install</span> button. On my phone I had to install an app to list all apps having the overlay permission, specifically this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Advanced Permission Manager<br />
https://play.google.com/store/apps/details?id=com.gmail.heagoo.pmaster</code></div></div>After filtering which apps could do that, I was able to pinpoint the problem app and use Titanium Backup to freeze it (check if it is the guilty one).<br />
<br />
I'd be happy if you could share what apps you've found out could do that for others to know.<br />
Thanks.<br />
In my case it was Lux Auto Brightness (1.75) [CM 12.1/Android 5.1]; after I upgraded it, the problem has disappeared (it disables itself automatically when an installation is detected).]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[WiFi stops working after Android phone deep sleep]]></title>
			<link>https://ashus.ashus.net/thread-161.html</link>
			<pubDate>Wed, 31 Dec 2014 04:39:39 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-161.html</guid>
			<description><![CDATA[I've had this problem for almost a year. When using WiFi with CyanogenMod 11 (Android KitKat 4.4.4), the phone lost connection to WiFi and no data came through even though it looked connected (the phone didn't use mobile data, because it was still connected to "faster" WiFi). Some apps drained the battery even more waiting for data and keeping the phone more awake (mostly waiting for position acquisition using Google geolocation).<br />
The problem was caused by WiFi router configuration where I use latest OpenWRT. The damned <span style="font-weight: bold;" class="mycode_b">WMM mode</span> (some special kind of QoS for multimedia) was causing this, and after I turned it off, there were no more lock-ups. From what I've read, there is a bug in Android sources that causes this and nobody bothered to fix it so far.]]></description>
			<content:encoded><![CDATA[I've had this problem for almost a year. When using WiFi with CyanogenMod 11 (Android KitKat 4.4.4), the phone lost connection to WiFi and no data came through even though it looked connected (the phone didn't use mobile data, because it was still connected to "faster" WiFi). Some apps drained the battery even more waiting for data and keeping the phone more awake (mostly waiting for position acquisition using Google geolocation).<br />
The problem was caused by WiFi router configuration where I use latest OpenWRT. The damned <span style="font-weight: bold;" class="mycode_b">WMM mode</span> (some special kind of QoS for multimedia) was causing this, and after I turned it off, there were no more lock-ups. From what I've read, there is a bug in Android sources that causes this and nobody bothered to fix it so far.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[OpenVPN configuration for LAN gaming]]></title>
			<link>https://ashus.ashus.net/thread-160.html</link>
			<pubDate>Wed, 31 Dec 2014 04:26:20 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-160.html</guid>
			<description><![CDATA[To be able to play LAN games over OpenVPN tunnel, please follow OpenVPN manual and create your unique certificates, one for server and one for players.<br />
Also create one additional certificate using <span style="font-style: italic;" class="mycode_i">openvpn --genkey --secret tls-auth.key</span> for handshakes.<br />
<br />
On the server machine you also have to open the port in public IP / redirect the port to your internal PC.<br />
The situation is as follows: a minimum of two players both have Windows, at least one has to have public IP/open port (42222). All other clients connect to him and they make a fast and secure virtual LAN network for games. None of them uses the chosen IP range for local network, in this example 10.5.5.0/24.<br />
<br />
Use this server config:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>port 42222<br />
proto udp<br />
dev tap<br />
tun-ipv6<br />
<br />
tls-auth tls-auth.key 0<br />
ca&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-ca.crt<br />
cert&nbsp;&nbsp;&nbsp;&nbsp; lan-server.crt<br />
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lan-server.key<br />
dh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-dh2048.pem<br />
<br />
tls-version-min 1.2<br />
cipher AES-256-CBC<br />
auth SHA256<br />
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256<br />
remote-cert-eku "TLS Web Client Authentication"<br />
<br />
server 10.5.5.0 255.255.255.0<br />
<br />
server-ipv6 fc11:0:1054::/64<br />
push route-ipv6 fc11:0:1054::/64<br />
<br />
duplicate-cn<br />
keepalive 10 120<br />
<br />
comp-lzo<br />
persist-key<br />
<br />
route-metric 1<br />
route 0.0.0.0 0.0.0.0 10.5.5.1 10001<br />
<br />
push "route-metric 1"<br />
push "route 0.0.0.0 0.0.0.0 10.5.5.1 10001"<br />
<br />
client-to-client<br />
<br />
status status-server-lan.log 60</code></div></div><br />
and this client config:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>remote 111.111.111.111<br />
float<br />
<br />
tls-client<br />
port 42222<br />
proto udp<br />
dev tap<br />
tun-ipv6<br />
nobind<br />
<br />
resolv-retry infinite<br />
<br />
tls-auth tls-auth.key 1<br />
ca&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-ca.crt<br />
cert&nbsp;&nbsp;&nbsp;&nbsp; lan-client.crt<br />
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lan-client.key<br />
<br />
tls-version-min 1.2<br />
cipher AES-256-CBC<br />
auth SHA256<br />
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256<br />
remote-cert-eku "TLS Web Server Authentication"<br />
<br />
pull dhcp-options<br />
<br />
mute 10<br />
comp-lzo<br />
verb 1</code></div></div><br />
Change 111.111.111.111 to match your server's IP. The predefined routes will take care of priorities and in most games the players should see each other and the server.<br />
Just one more thing - you need to make sure the virtual device is given the highest priority (even above LAN or WiFi). You can do so by renaming your OpenVPN TAP network adapter to "OpenVPN" and running these commands from command line:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>netsh int ipv4 set interface OpenVPN metric=2<br />
&nbsp;&nbsp; netsh int ipv6 set interface OpenVPN metric=2</code></div></div><br />
I recommend creating gameserver on the server machine to minimize latency. And the very last thing would be to add the network range to trusted networks in your firewall (once and for good).]]></description>
			<content:encoded><![CDATA[To be able to play LAN games over OpenVPN tunnel, please follow OpenVPN manual and create your unique certificates, one for server and one for players.<br />
Also create one additional certificate using <span style="font-style: italic;" class="mycode_i">openvpn --genkey --secret tls-auth.key</span> for handshakes.<br />
<br />
On the server machine you also have to open the port in public IP / redirect the port to your internal PC.<br />
The situation is as follows: a minimum of two players both have Windows, at least one has to have public IP/open port (42222). All other clients connect to him and they make a fast and secure virtual LAN network for games. None of them uses the chosen IP range for local network, in this example 10.5.5.0/24.<br />
<br />
Use this server config:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>port 42222<br />
proto udp<br />
dev tap<br />
tun-ipv6<br />
<br />
tls-auth tls-auth.key 0<br />
ca&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-ca.crt<br />
cert&nbsp;&nbsp;&nbsp;&nbsp; lan-server.crt<br />
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lan-server.key<br />
dh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-dh2048.pem<br />
<br />
tls-version-min 1.2<br />
cipher AES-256-CBC<br />
auth SHA256<br />
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256<br />
remote-cert-eku "TLS Web Client Authentication"<br />
<br />
server 10.5.5.0 255.255.255.0<br />
<br />
server-ipv6 fc11:0:1054::/64<br />
push route-ipv6 fc11:0:1054::/64<br />
<br />
duplicate-cn<br />
keepalive 10 120<br />
<br />
comp-lzo<br />
persist-key<br />
<br />
route-metric 1<br />
route 0.0.0.0 0.0.0.0 10.5.5.1 10001<br />
<br />
push "route-metric 1"<br />
push "route 0.0.0.0 0.0.0.0 10.5.5.1 10001"<br />
<br />
client-to-client<br />
<br />
status status-server-lan.log 60</code></div></div><br />
and this client config:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>remote 111.111.111.111<br />
float<br />
<br />
tls-client<br />
port 42222<br />
proto udp<br />
dev tap<br />
tun-ipv6<br />
nobind<br />
<br />
resolv-retry infinite<br />
<br />
tls-auth tls-auth.key 1<br />
ca&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lan-ca.crt<br />
cert&nbsp;&nbsp;&nbsp;&nbsp; lan-client.crt<br />
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lan-client.key<br />
<br />
tls-version-min 1.2<br />
cipher AES-256-CBC<br />
auth SHA256<br />
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256<br />
remote-cert-eku "TLS Web Server Authentication"<br />
<br />
pull dhcp-options<br />
<br />
mute 10<br />
comp-lzo<br />
verb 1</code></div></div><br />
Change 111.111.111.111 to match your server's IP. The predefined routes will take care of priorities and in most games the players should see each other and the server.<br />
Just one more thing - you need to make sure the virtual device is given the highest priority (even above LAN or WiFi). You can do so by renaming your OpenVPN TAP network adapter to "OpenVPN" and running these commands from command line:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>netsh int ipv4 set interface OpenVPN metric=2<br />
&nbsp;&nbsp; netsh int ipv6 set interface OpenVPN metric=2</code></div></div><br />
I recommend creating gameserver on the server machine to minimize latency. And the very last thing would be to add the network range to trusted networks in your firewall (once and for good).]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Jak rozjet O2 Peněženku (NFC) i s právy roota]]></title>
			<link>https://ashus.ashus.net/thread-139.html</link>
			<pubDate>Fri, 03 May 2013 16:34:59 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-139.html</guid>
			<description><![CDATA[Jde to na rootovaném telefonu bez jediného restartu.<br />
Návodem nesleduju obejítí bezpečnosti nebo nebezpečnosti, ono mít platební kartu na jakémkoli počítači je samo o sobě riziko.<br />
Root práva využívám pouze pro adblock a firewall, což je bohužel dneska nutnost (reklamy, důvěra v aplikace obecně, každá si může přistupovat k nebezpečně moc věcem, ale nepošle je ven).<br />
Věřím, že v budoucnu tvůrci aplikace peněženky zkoumání roota vzdají, vždyť firewall je věc potřebná i pro holku.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Předpoklady:</span><ul class="mycode_list"><li>rootnutý telefon s NFC s podporou plateb a se SuperSU (např. Samsung Galaxy S III mini NFC aka GT-I8190N)<br />
</li>
<li>nainstalovaná aplikace O2 Peněženka<br />
</li>
<li>nainstalovaný ES File Explorer nebo jiný root filesystem manažer</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Postup:</span><br />
<ol type="1" class="mycode_list"><li>otevřte filemanažer, v něm složku /system/app<br />
</li>
<li>změňte v ESFE&gt;možnosti&gt;root explorer&gt;mount R/W oddíl /system na RW<br />
</li>
<li>přejmenujte soubor Superuser.apk na Superuser2.apk<br />
</li>
<li>změňte v ESFE&gt;možnosti&gt;root explorer&gt;mount R/W oddíl /system zpátky na RO<br />
</li>
<li>přeinstalujte aplikaci Superuser2.apk tapnutím (nevím jestli je to nutné, ale pro sichr)<br />
</li>
<li>otevřte SuperSU, v nastavení vypněte zašrktávátko u Povolit Superuser<br />
</li>
<li>pusťte a nakonfigurujte aplikaci O2 Peněženka, zvláště zvolte automatiku<br />
</li>
<li>otevřte SuperSU, v nastavení zpátky zapněte zašrktávátko u Povolit Superuser<br />
</li>
<li>pusťte aplikaci O2 Peněženka, nepovolujte jí zvláštní práva, sice opět vyhodí zprávu o nepodporovaném OS, ale v tomto stavu by dle ostatních měly malé platby fungovat</li>
</ol>
<br />
Nemám otestováno placení, ale chybová hláška se liší - buď nepodporovaný OS(=root) nebo chyba karty, kontaktujte vydavatele(=SIM bez platební karty). <br />
ČSOB/Era zatím NFC platby mobilem připravuje, ale podle jiného <a href="http://androidforum.cz/bezkontaktni-platby-a-root-navod-t41815.html" target="_blank" rel="noopener" class="mycode_url">návodu</a>, kde se úplně ruší rootování a trvá mnohem víc času by to mělo fungovat po prvotní konfiguraci do částky platby 500 Kč (kdy není nutno zadávat na telefonu PIN).<br />
<br />
V podstatě při platbách nad 500 by mělo jít teoreticky postupovat takto:<ul class="mycode_list"><li>klasicky máte povolený Superuser při spuštění systému, pustíte adblock a firewall (pustí se samo)<br />
</li>
<li>při potřebě vyšší platby odeberete Superuser (adblock a iptables - firewall stále běží) a můžete platit kartou i se zadáváním PINu<br />
</li>
<li>až to nebudete potřebovat, nejpozději ale před dalším restartem telefonu nebo firewallu (aby vše naběhlo samo) zase Superuser povolíte.</li>
</ul>
]]></description>
			<content:encoded><![CDATA[Jde to na rootovaném telefonu bez jediného restartu.<br />
Návodem nesleduju obejítí bezpečnosti nebo nebezpečnosti, ono mít platební kartu na jakémkoli počítači je samo o sobě riziko.<br />
Root práva využívám pouze pro adblock a firewall, což je bohužel dneska nutnost (reklamy, důvěra v aplikace obecně, každá si může přistupovat k nebezpečně moc věcem, ale nepošle je ven).<br />
Věřím, že v budoucnu tvůrci aplikace peněženky zkoumání roota vzdají, vždyť firewall je věc potřebná i pro holku.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Předpoklady:</span><ul class="mycode_list"><li>rootnutý telefon s NFC s podporou plateb a se SuperSU (např. Samsung Galaxy S III mini NFC aka GT-I8190N)<br />
</li>
<li>nainstalovaná aplikace O2 Peněženka<br />
</li>
<li>nainstalovaný ES File Explorer nebo jiný root filesystem manažer</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Postup:</span><br />
<ol type="1" class="mycode_list"><li>otevřte filemanažer, v něm složku /system/app<br />
</li>
<li>změňte v ESFE&gt;možnosti&gt;root explorer&gt;mount R/W oddíl /system na RW<br />
</li>
<li>přejmenujte soubor Superuser.apk na Superuser2.apk<br />
</li>
<li>změňte v ESFE&gt;možnosti&gt;root explorer&gt;mount R/W oddíl /system zpátky na RO<br />
</li>
<li>přeinstalujte aplikaci Superuser2.apk tapnutím (nevím jestli je to nutné, ale pro sichr)<br />
</li>
<li>otevřte SuperSU, v nastavení vypněte zašrktávátko u Povolit Superuser<br />
</li>
<li>pusťte a nakonfigurujte aplikaci O2 Peněženka, zvláště zvolte automatiku<br />
</li>
<li>otevřte SuperSU, v nastavení zpátky zapněte zašrktávátko u Povolit Superuser<br />
</li>
<li>pusťte aplikaci O2 Peněženka, nepovolujte jí zvláštní práva, sice opět vyhodí zprávu o nepodporovaném OS, ale v tomto stavu by dle ostatních měly malé platby fungovat</li>
</ol>
<br />
Nemám otestováno placení, ale chybová hláška se liší - buď nepodporovaný OS(=root) nebo chyba karty, kontaktujte vydavatele(=SIM bez platební karty). <br />
ČSOB/Era zatím NFC platby mobilem připravuje, ale podle jiného <a href="http://androidforum.cz/bezkontaktni-platby-a-root-navod-t41815.html" target="_blank" rel="noopener" class="mycode_url">návodu</a>, kde se úplně ruší rootování a trvá mnohem víc času by to mělo fungovat po prvotní konfiguraci do částky platby 500 Kč (kdy není nutno zadávat na telefonu PIN).<br />
<br />
V podstatě při platbách nad 500 by mělo jít teoreticky postupovat takto:<ul class="mycode_list"><li>klasicky máte povolený Superuser při spuštění systému, pustíte adblock a firewall (pustí se samo)<br />
</li>
<li>při potřebě vyšší platby odeberete Superuser (adblock a iptables - firewall stále běží) a můžete platit kartou i se zadáváním PINu<br />
</li>
<li>až to nebudete potřebovat, nejpozději ale před dalším restartem telefonu nebo firewallu (aby vše naběhlo samo) zase Superuser povolíte.</li>
</ul>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB]]></title>
			<link>https://ashus.ashus.net/thread-128.html</link>
			<pubDate>Thu, 23 Aug 2012 15:43:06 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-128.html</guid>
			<description><![CDATA[Načítání PhpMyAdminu při 20 000 databázích je docela problém, trvá to okolo 4 minut. Vymyslel jsem řešení, které načítání solidně zrychlí (nehledají se složky, ale selectuje se z databáze).<br />
Nejprve je nutno vytvořit ControlUsera - pojmenoval jsem ho <span style="font-weight: bold;" class="mycode_b">phpmyadmin_optimizer</span>. Je nutné mu přidělit právo SELECT na <span style="font-style: italic;" class="mycode_i">mysql.db.Db </span>a <span style="font-style: italic;" class="mycode_i">mysql.db.User.</span>.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>CREATE USER 'phpmyadmin_optimizer'@'localhost' IDENTIFIED BY '';<br />
GRANT SELECT (`Db` , `User`) ON `mysql`.`db` TO 'phpmyadmin_optimizer'@'localhost'; </code></div></div>Následně do konfigurace config.inc.php vložíte toto:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;cfg['DisplayDatabasesList'] = 'auto';<br />
<br />
&#36;cfg['Servers'][&#36;i]['controluser'] = 'phpmyadmin_optimizer';<br />
&#36;cfg['Servers'][&#36;i]['controlpass'] = '';<br />
&#36;cfg['Servers'][&#36;i]['ShowDatabasesCommand'] = "SELECT Db FROM `mysql`.`db` WHERE User LIKE (SELECT IF(('#user#'='root'),'%','#user#'))"; </code></div></div><br />
Zajistíte zobrazení všech databází rootovi, ale ostatním uživatelům necháte zobrazit jen databáze, které jim patří.]]></description>
			<content:encoded><![CDATA[Načítání PhpMyAdminu při 20 000 databázích je docela problém, trvá to okolo 4 minut. Vymyslel jsem řešení, které načítání solidně zrychlí (nehledají se složky, ale selectuje se z databáze).<br />
Nejprve je nutno vytvořit ControlUsera - pojmenoval jsem ho <span style="font-weight: bold;" class="mycode_b">phpmyadmin_optimizer</span>. Je nutné mu přidělit právo SELECT na <span style="font-style: italic;" class="mycode_i">mysql.db.Db </span>a <span style="font-style: italic;" class="mycode_i">mysql.db.User.</span>.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>CREATE USER 'phpmyadmin_optimizer'@'localhost' IDENTIFIED BY '';<br />
GRANT SELECT (`Db` , `User`) ON `mysql`.`db` TO 'phpmyadmin_optimizer'@'localhost'; </code></div></div>Následně do konfigurace config.inc.php vložíte toto:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;cfg['DisplayDatabasesList'] = 'auto';<br />
<br />
&#36;cfg['Servers'][&#36;i]['controluser'] = 'phpmyadmin_optimizer';<br />
&#36;cfg['Servers'][&#36;i]['controlpass'] = '';<br />
&#36;cfg['Servers'][&#36;i]['ShowDatabasesCommand'] = "SELECT Db FROM `mysql`.`db` WHERE User LIKE (SELECT IF(('#user#'='root'),'%','#user#'))"; </code></div></div><br />
Zajistíte zobrazení všech databází rootovi, ale ostatním uživatelům necháte zobrazit jen databáze, které jim patří.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Opera 12 extension compatibility fix]]></title>
			<link>https://ashus.ashus.net/thread-126.html</link>
			<pubDate>Thu, 29 Mar 2012 10:58:48 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-126.html</guid>
			<description><![CDATA[The console shows Unhandled DOMException: INVALID_STATE_ERR on running:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>opera.extension.onconnect = function(event){<br />
 event.source.postMessage(...);<br />
}; </code></div></div>I tried a little debug with my own extensions using similar postMessage, the trick is to use <span style="font-weight: bold;" class="mycode_b">opera.extension.broadcastMessage</span> instead of <span style="font-weight: bold;" class="mycode_b">event.source.postMessage</span> . Replace it in the extension's background.js and it should work again.]]></description>
			<content:encoded><![CDATA[The console shows Unhandled DOMException: INVALID_STATE_ERR on running:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>opera.extension.onconnect = function(event){<br />
 event.source.postMessage(...);<br />
}; </code></div></div>I tried a little debug with my own extensions using similar postMessage, the trick is to use <span style="font-weight: bold;" class="mycode_b">opera.extension.broadcastMessage</span> instead of <span style="font-weight: bold;" class="mycode_b">event.source.postMessage</span> . Replace it in the extension's background.js and it should work again.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Nvidia 3D Vision Video Player crashes]]></title>
			<link>https://ashus.ashus.net/thread-125.html</link>
			<pubDate>Wed, 21 Mar 2012 00:25:23 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-125.html</guid>
			<description><![CDATA[If your Nvidia 3D Vision Video Player 1.7.5 crashes on MKV video open, it could be caused by CoreAVC 3. Haali Media Splitter uses <span style="font-weight: bold;" class="mycode_b">custom media type for H.264</span>, which is used to override FourCC to avoid using WDF system builtin decoder. Either disable CoreAVC priority or disable custom media type in Haali configuration and try to open your SBS video again.<br />
Windows' application log shows the crash ID 1000 for StereoPlayer.exe in module Stf.dll.<br />
Oh and others seem to think forcing WinXP SP3 compatiblity mode for the player should help. Well it did not help me.]]></description>
			<content:encoded><![CDATA[If your Nvidia 3D Vision Video Player 1.7.5 crashes on MKV video open, it could be caused by CoreAVC 3. Haali Media Splitter uses <span style="font-weight: bold;" class="mycode_b">custom media type for H.264</span>, which is used to override FourCC to avoid using WDF system builtin decoder. Either disable CoreAVC priority or disable custom media type in Haali configuration and try to open your SBS video again.<br />
Windows' application log shows the crash ID 1000 for StereoPlayer.exe in module Stf.dll.<br />
Oh and others seem to think forcing WinXP SP3 compatiblity mode for the player should help. Well it did not help me.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Přesun obří MySQL databáze]]></title>
			<link>https://ashus.ashus.net/thread-124.html</link>
			<pubDate>Thu, 08 Mar 2012 08:50:37 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://ashus.ashus.net/member.php?action=profile&uid=2">Ashus</a>]]></dc:creator>
			<guid isPermaLink="false">https://ashus.ashus.net/thread-124.html</guid>
			<description><![CDATA[V případě, že budete potřebovat přesunout obří databázi - např. 1GB velkou, z jednoho stroje na jiný, setkáte se s několika problémy.<br />
<br />
Začneme klasicky: vytvoříme dump databáze:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mysqldump -uroot -pheslo dbname &gt; dump.sql</code></div></div><br />
Bohužel pro jakoukoli úpravu dumpu se setkáte s problémem, kdy nebudete moci otevřít tak velký soubor v editoru (mcedit, nano). Proto bude nutné soubor rozkouskovat a zase spojit - a budete potřebovat dvojnásobek místa na disku.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mkdir dump; split -b 1MB dump.sql dump/dump.<br />
/* úpravy zde */<br />
cat dump/* &gt; dump2.sql; rm -r dump/</code></div></div><br />
<br />
Dále je vhodné na začátek dumpu přidat tyto řádky snižující zátěž při importu:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>SET foreign_key_checks=0;<br />
SET sql_log_bin=0;<br />
SET unique_checks=0; </code></div></div><br />
A za každý CREATE TABLE, kde budou stotisíce řádků vložíme:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ALTER TABLE tablename DISABLE KEYS; </code></div></div>Není nutné řešit enable keys, protože to se provede po importu automaticky.<br />
<br />
<br />
Soubory zase spojíme a už jen provedeme čistý import:<br />
[code]mysql -uroot -pheslo dbname ]]></description>
			<content:encoded><![CDATA[V případě, že budete potřebovat přesunout obří databázi - např. 1GB velkou, z jednoho stroje na jiný, setkáte se s několika problémy.<br />
<br />
Začneme klasicky: vytvoříme dump databáze:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mysqldump -uroot -pheslo dbname &gt; dump.sql</code></div></div><br />
Bohužel pro jakoukoli úpravu dumpu se setkáte s problémem, kdy nebudete moci otevřít tak velký soubor v editoru (mcedit, nano). Proto bude nutné soubor rozkouskovat a zase spojit - a budete potřebovat dvojnásobek místa na disku.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mkdir dump; split -b 1MB dump.sql dump/dump.<br />
/* úpravy zde */<br />
cat dump/* &gt; dump2.sql; rm -r dump/</code></div></div><br />
<br />
Dále je vhodné na začátek dumpu přidat tyto řádky snižující zátěž při importu:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>SET foreign_key_checks=0;<br />
SET sql_log_bin=0;<br />
SET unique_checks=0; </code></div></div><br />
A za každý CREATE TABLE, kde budou stotisíce řádků vložíme:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ALTER TABLE tablename DISABLE KEYS; </code></div></div>Není nutné řešit enable keys, protože to se provede po importu automaticky.<br />
<br />
<br />
Soubory zase spojíme a už jen provedeme čistý import:<br />
[code]mysql -uroot -pheslo dbname ]]></content:encoded>
		</item>
	</channel>
</rss>