<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Broom Cupboard</title>
	<atom:link href="https://chriswoods.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>https://chriswoods.co.uk/</link>
	<description>Vive la difference! Now broadcasting in 625 lines.</description>
	<lastBuildDate>Tue, 07 Feb 2023 00:03:44 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chriswoods.co.uk/wp-content/uploads/2015/10/cropped-hypnotoad-50ffa8_2891023-32x32.jpg</url>
	<title>The Broom Cupboard</title>
	<link>https://chriswoods.co.uk/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Day one review: Hotline Games anti-slip grip mod for Razer DeathAdder V2 Pro mouse</title>
		<link>https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/</link>
					<comments>https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Thu, 17 Nov 2022 03:02:15 +0000</pubDate>
				<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Miscellaneous Whatnots]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[grip]]></category>
		<category><![CDATA[mod]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[review]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=904</guid>

					<description><![CDATA[<p>I've used Razer mice for years, specifically the venerable DeathAdder. I've tried loads of other mice, including the competition (G502 etc) which are impressive but just don't feel quite right to me. My Deathadder hall of fame (or, the drawer next to my desk) consists of many of the DA models, all used extensively until &#8230; <a href="https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/" class="more-link">Continue reading<span class="screen-reader-text"> "Day one review: Hotline Games anti-slip grip mod for Razer DeathAdder V2 Pro mouse"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/">Day one review: Hotline Games anti-slip grip mod for Razer DeathAdder V2 Pro mouse</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I've used Razer mice for years, specifically <a href="https://www.tomsguide.com/features/razer-deathadder-passes-10-million-sales-but-is-it-still-worth-it">the venerable DeathAdder</a>. I've tried loads of other mice, including the competition (G502 etc) which are impressive but just don't feel quite right to me. My Deathadder hall of fame (or, the drawer next to my desk) consists of many of the DA models, all used extensively until either destruction or upgrade - starting with the original model, through the various models with their upgraded sensors or higher DPI, until the most recent purchases of the DeathAdder Elite (wired) and the DeathAdder V2 Pro (wired/wireless).</p>



<p class="wp-block-paragraph">However, as I have Sandpaper Fingers (super dry skin which is quite abrasive), the textured top surface and the silicone side rubber grips quickly get worn down to smooth, shiny surfaces, which I hate. But there is a solution... grip tape!</p>



<span id="more-904"></span>



<p class="wp-block-paragraph">I used to do the northern thing of bodge some gaff tape on to the mouse shell, where the fingers would sit over buttons, but it invariably looks ugly as it wears. In turn the tape also goes shiny, although Pro Gaff seems to wear best over time. Cheaper gaff tape leaves a nasty gluey residue if it's left applied for longer than a few months. It's cleanable but is always a sticky, messy job. </p>



<h2 class="wp-block-heading">So, let's grab some proper anti-slip mod tape and clean the mouse up. </h2>



<p class="wp-block-paragraph">My DA V2 wireless fortunately has a nice precut product available: Hotline Games' "Side Stickers". The version I bought is specifically for the DA V2 Wireless (button shapes and sides are all slightly different across the range), and was a reasonable price on eBay. <a href="https://www.ebay.co.uk/itm/234663609754">I decided to buy mine from an Australian seller</a> though the product was drop-shipped from a UK fulfiller, which is fine by me. Much quicker than the AliExpress slow boat from China. </p>



<p class="wp-block-paragraph">This is the mouse with my dodgy stopgap tape mod:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-1024x768.jpg" alt class="wp-image-905" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040546-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-1024x768.jpg" alt class="wp-image-906" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_040643-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Nasty adhesive mess from the tape, yuck. It turns into viscous, slimy gunk over time, Tip: use more of the same tape to 'lift' most of the adhesive up</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-1024x768.jpg" alt class="wp-image-907" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041904-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Some time later, clean! Now time for the proper tape.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-1024x768.jpg" alt class="wp-image-908" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041922-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-1024x768.jpg" alt class="wp-image-909" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_041952-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">See how the stock side grips are <em>already</em> going shiny? And I was being careful with this one!</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-1024x768.jpg" alt class="wp-image-910" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042011-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Sandpaper hands strikes again (you should see my keycaps...)</figcaption></figure>



<h2 class="wp-block-heading">How was the application process?</h2>



<p class="wp-block-paragraph">The pictorial instructions are easy to follow, each piece has a slightly different shape so it is fairly obvious. The pieces are cut from 3M sheets with a patterned surface texture larger than the stock, but that's fine. The pads' adhesive is tacky and mates well with the mouse surface, but you can peel it back several times to reposition - which I did a few times for each button to align the edges. No worries there, and application overall was quick and hassle-free... Once I'd finished cleaning the mouse. </p>



<p class="wp-block-paragraph">The pieces are nicely cut in decent thickness 3M material, no frayed edges or issues in the texture, and they fit the mouse precisely with a little leeway for placement on the side and palm pieces.</p>



<h2 class="wp-block-heading">Final thoughts</h2>



<p class="wp-block-paragraph">These grips have been on the mouse for precisely two days as of writing, so we'll see whether these silicone grips start to 'sweat' with time and how the adhesive holds up - I'll update the post in future. </p>



<p class="wp-block-paragraph">I'm feeling somewhat confident because Hotline Games seems quite well known, alongside competitors like Lizard Skins, Dragon Skins, Corepads etc. <a href="https://www.youtube.com/watch?v=GyfpJOu7N48">Jaypher did a review in 2020 comparing some of these</a> and other reviews abound.</p>



<p class="wp-block-paragraph">Some more photos during the application process:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="911" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-1024x768.jpg" alt class="wp-image-911" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042430-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Nicely cut to size, and conforms to the mouse contours well.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="912" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-1024x768.jpg" alt class="wp-image-912" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042439-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>
</figure>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="914" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-1024x768.jpg" alt class="wp-image-914" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042515-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="917" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-1024x768.jpg" alt class="wp-image-917" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042730-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="919" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-1024x768.jpg" alt class="wp-image-919" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042743-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="916" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-1024x768.jpg" alt class="wp-image-916" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_042754-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="913" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-1024x768.jpg" alt class="wp-image-913" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043206-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Left side pad...</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="915" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-1024x768.jpg" alt class="wp-image-915" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043216-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">Right side pad... Take time to align these to match your grip.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="920" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-1024x768.jpg" alt class="wp-image-920" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043305-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">The right side pad covers where my fingers rest on the side of the mouse pretty precisely, which is great.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="918" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-768x1024.jpg" alt class="wp-image-918" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-768x1024.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-225x300.jpg 225w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-1152x1536.jpg 1152w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-1536x2048.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-1200x1600.jpg 1200w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043543-scaled.jpg 1920w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"><figcaption class="wp-element-caption">The finished article. Looks slightly ridiculous but feels comfortable.</figcaption></figure>
</figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The cleaning wipes are worth using before you apply the stickers, finger grease is quite insidious and you'll have issues with the pads lifting if the surface is not squeaky clean. They're nice IPA-impregnated pads, on the slightly thicker side, but I used a handful of Zeiss lens wipes to finish the cleaning job and saving the second supplied wipe should I need it in future. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-1024x768.jpg" alt class="wp-image-921" srcset="https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-768x576.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-1536x1152.jpg 1536w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-2048x1536.jpg 2048w, https://chriswoods.co.uk/wp-content/uploads/2022/11/20221115_043944-1200x900.jpg 1200w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"></figure>



<p class="wp-block-paragraph">I'll see about sourcing another brand for my DA Elite so I can do some comparisons. I also need to replace the optical switch in my DA V2 as it's losing some of its click resistance (I bought the mouse second-hand, so not entirely surprised); I'll take some photos of that process and link to parts.</p>
<p>The post <a href="https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/">Day one review: Hotline Games anti-slip grip mod for Razer DeathAdder V2 Pro mouse</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2022/11/day-one-review-hotline-games-anti-slip-grip-mod-for-razer-deathadder-v2-pro-mouse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to download and install builds of the latest iperf3 Windows versions</title>
		<link>https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/</link>
					<comments>https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Sun, 13 Mar 2022 04:00:09 +0000</pubDate>
				<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Hints and Tips and Tricks]]></category>
		<category><![CDATA[Miscellaneous Whatnots]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[iperf]]></category>
		<category><![CDATA[iperf3]]></category>
		<category><![CDATA[utility]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=797</guid>

					<description><![CDATA[<p>iperf3 is a very useful network throughput testing tool, however the most prominent versions available for Windows are either old, buggy or superceded by newer builds. It's always worth keeping up to date with the latest available build, but most people on Windows won't be able to compile from source due to lack of knowledge/lack &#8230; <a href="https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/" class="more-link">Continue reading<span class="screen-reader-text"> "How to download and install builds of the latest iperf3 Windows versions"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/">How to download and install builds of the latest iperf3 Windows versions</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">iperf3 is a very useful network throughput testing tool, however the most prominent versions available for Windows are either old, buggy or superceded by newer builds. It's always worth keeping up to date with the latest available build, but most people on Windows won't be able to compile from source due to lack of knowledge/lack of time.</p>



<p class="wp-block-paragraph"><a href="https://github.com/esnet/iperf">The ESNet project maintains iperf3</a> but doesn't release compiled binaries for Windows. Sites like the high-visibility <a href="https://iperf.fr">iperf.fr</a> only host up to v3.1.3 which dates back to 2016 - six years old as of writing, and the operator of that site appears to have gone AWOL or has stopped updating it.</p>



<p class="wp-block-paragraph">Fortunately, the wonderful user <em>BudMan</em> on the Neowin forums <a href="https://www.neowin.net/forum/topic/1234695-iperf-311-windows-build/">decided to do something about this</a>, and has been steadily compiling the latest iperf3 builds for Windows and hosting them for download <strong>since 2014</strong>! Someone should buy BudMan a beer. Another Neowin user <em>CryptAnalyst</em> has also recently begun compiling for Windows and is <a href="https://github.com/ar51an/iperf3-win-builds">publishing builds to their GitHub</a>. Spoiled for choice!</p>



<p class="wp-block-paragraph"><a href="https://www.neowin.net/forum/topic/1234695-iperf-311-windows-build/">https://www.neowin.net/forum/topic/1234695-iperf-311-windows-build/</a> has the latest build linked directly, and you can download all previous releases from <a href="https://files.budman.pw">https://files.budman.pw</a>. </p>



<p class="wp-block-paragraph">For ease of use on the command line, don't forget to extract the zip to a 'persistent' location, then <a href="https://gist.github.com/nex3/c395b2f8fd4b02068be37c961301caa7">add that folder to your Windows PATH environment variable</a> (it only takes a few seconds). <a href="https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/">Here's another guide on how to do it in Windows 10</a>; the process is <a href="https://web.archive.org/web/20150729183638/http://www.itechtalk.com/thread3595.html#post6240">very similar for Windows 7</a> (see also <a href="https://stackoverflow.com/questions/23400030/windows-7-add-path">https://stackoverflow.com/questions/23400030/windows-7-add-path</a>).</p>



<p class="wp-block-paragraph">Of course, adding the iperf3 path to your Windows PATH variable is optional, but it's convenient. Once done, you can just invoke "iperf3" from a prompt like anything else. Happy throughput testing.</p>
<p>The post <a href="https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/">How to download and install builds of the latest iperf3 Windows versions</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2022/03/how-to-download-and-install-builds-of-the-latest-iperf3-windows-versions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Foobar2000, Now Playing Simple and standardising complex tag scenarios</title>
		<link>https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/</link>
					<comments>https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Sun, 16 Jan 2022 00:15:48 +0000</pubDate>
				<category><![CDATA[Audiogeekery]]></category>
		<category><![CDATA[Hints and Tips and Tricks]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[fb2k]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[skipyrich]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=793</guid>

					<description><![CDATA[<p>Or, using Foobar2000 with the Now Playing Simple extension to output well-formatted and consistently "now playing" text in an environment where you have VA, tagless and numerous album artist/track artist permutations I use the sublime foobar2000 (fb2k) player on Windows for so many reasons. I also output the currently playing track to a text file &#8230; <a href="https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/" class="more-link">Continue reading<span class="screen-reader-text"> "Foobar2000, Now Playing Simple and standardising complex tag scenarios"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/">Foobar2000, Now Playing Simple and standardising complex tag scenarios</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size wp-block-paragraph"><em>Or, using Foobar2000 with the Now Playing Simple extension to output well-formatted and consistently "now playing" text in an environment where you have VA, tagless and numerous album artist/track artist permutations</em></p>



<p class="wp-block-paragraph">I use the sublime <a href="https://www.foobar2000.org/">foobar2000</a> (fb2k) player on Windows for so many reasons. I also output the currently playing track to a text file for reasons beyond the scope of this article, but I've found it's useful to standardise the output while handling a wide variety of source file metadata scenarios:</p>



<ul class="wp-block-list"><li>Total lack of metadata (untagged files)</li><li>Track artist and title only</li><li>More complete metadata, but no album artist</li><li>More complete metadata, with an Album Artist of Various Artists or Various</li><li>an Album Artist which is the artist name, with some tracks from an album with different Track Artist metadata</li></ul>



<p class="wp-block-paragraph">All in all this makes for a slightly complex setup. I also have some requirements to not just print "Various Artists" or "Various", I prefer to see "VA" but I don't want to retag all my source files.</p>



<p class="wp-block-paragraph">Fortunately fb2k has <a href="https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Reference">a very flexible tagging system with plenty of logical operators</a>. And <a href="https://skipyrich.com/w/index.php/Foobar2000:Now_Playing_Simple">Skipyrich's "Now Playing Simple</a>" extension for fb2k does just the job, outputting to a text file in "log" mode. This is what I devised:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>$if(%isplaying%,
$if(%ispaused%,
,
)

$if($or($stricmp(%album artist%,Various),$stricmp(%album artist%,Various Artists))
,,)

$if(%artist%,%artist% - ,)
%title% 

$if($or($stricmp(%album artist%,Various),$stricmp(%album artist%,Various Artists))
,,)


$if(
$or(
%album%,%discnumber%,%tracknumber%,%catalogid%),'[',
)

$if($stricmp(%artist%,%album artist%),[%album%', '],
$if(
$or($stricmp(%album artist%,Various),$stricmp(%album artist%,Various Artists)),
VA '//',%album artist% '//') %album%', ')

[ Disc %discnumber%, ][Track %tracknumber%][, %catalogid%]

$if(
$or(
%album%,%discnumber%,%tracknumber%,%catalogid%),']',
)
$crlf(),
)</pre>



<p class="wp-block-paragraph">I've found this outputs a standardised result which looks like this:</p>



<ul class="wp-block-list"><li>internet radio stream which only ever presents track artist and title: <br>"The Boxer Rebellion - Diamonds"</li><li>A track with full metadata: <br>"The Upbeats feat. Sylvee - Divide [The Upbeats // Not Forever, Track 8/13, VSN088]"</li><li>A track with full metadata and a non-"various artists" album artist: <br>"Noisia &amp; Phace - Purpose (Buunshin Remix) [Noisia // The Resonance I, Track 6/8, VSN089]"</li><li>A track from a "Various artists" album: <br>"Abstract Elements - Curcuma [VA // Invisible 020 EP, Track 02, INVSB020]"</li><li>For tracks with absolutely no metadata, it just passes fb2k's default assumption that the filename is the title: <br>"Fierce &amp; Fresh - Brok"<br>"Commix - Be True (Synergy Bootleg)"<br>and so on.</li></ul>



<p class="wp-block-paragraph">There's a lot of nested ifs and ors in the above example, and it could probably be slightly neater. 3am brain has its own way of thinking. What the logic does is mostly:</p>



<ul class="wp-block-list"><li>rewrite instances of "Various Artists" or "Various" to VA</li><li>some conditional true/false checks for whether any extended metadata tags exist</li><li>only output the 'literal' opener and closer square brackets if extended metadata exists</li><li>Non-escaped square brackets are a foobar2000 way of saying 'only output the entire contents of these brackets if the metadata tag contained in it exists in the currently playing file'</li><li>There's also some juggling of %artist%, %album artist% and %track artist% variables, because fb2k does some internal substitution - and I don't want to always print the album artist inside the outputted extended tag portion if the album artist matches the track artist.</li></ul>



<p class="wp-block-paragraph">Give the extension a try, tell me what you think and whether I could improve upon the formatting structure above.</p>
<p>The post <a href="https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/">Foobar2000, Now Playing Simple and standardising complex tag scenarios</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2022/01/fb2k-now-playing-metadata-formatting-output-to-file/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compiling the HTTP Substitutions Filter module for NGINX on CentOS 7</title>
		<link>https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/</link>
					<comments>https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/#comments</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Thu, 13 Jan 2022 00:52:34 +0000</pubDate>
				<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Miscellaneous Whatnots]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ngx_http_substitutions_filter_module]]></category>
		<category><![CDATA[yum]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=781</guid>

					<description><![CDATA[<p>I use NGINX for various things, including one niche case, where I rewrite and replace strings before presenting them to the user. I do this using the HTTP substitutions filter module. The readily-compiled module to accomplish this is included with the paid NGINX Plus, but is also available to DIY compile if you have the &#8230; <a href="https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/" class="more-link">Continue reading<span class="screen-reader-text"> "Compiling the HTTP Substitutions Filter module for NGINX on CentOS 7"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/">Compiling the HTTP Substitutions Filter module for NGINX on CentOS 7</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I use <a href="//nginx.org">NGINX</a> for various things, including one niche case, where I rewrite and replace strings before presenting them to the user. I do this using the <a href="https://docs.nginx.com/nginx/admin-guide/dynamic-modules/http-substitutions-filter/">HTTP substitutions filter module</a>. The readily-compiled module to accomplish this is included with the paid <a href="https://www.nginx.com/faq/how-is-nginx-plus-different-from-the-open-source-version-of-nginx/">NGINX Plus</a>, but is also available to DIY compile if you have the ability.</p>



<p class="wp-block-paragraph"><a href="https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/#compiled-so-dynamic-modules"><em>If you're just looking for precompiled .so files you can use with NGINX on CentOS 7 available from the nginx.org repository, see the end of this post.</em></a></p>



<p class="wp-block-paragraph">A while ago I took the time to work out how to compile this for updates; the CentOS box I run NGINX on uses yum packages for updates, but then the subs filter module stops working. So, after half an hour or so of tinkering, quiet swearing, obtaining of additional packages, tweaking commandlines etc... I have a working oneliner to make an NGINX build which will also compile a suitable <code>ngx_http_subs_filter_module.so</code> file. </p>



<p class="wp-block-paragraph">To compile this dynamic module you generally need to build with the same switches used for the packaged build. So, first step was to find out how it was compiled:</p>



<span id="more-781"></span>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>nginx -V

nginx version: nginx/1.21.5
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'</pre>



<p class="wp-block-paragraph">OK, good stuff. Until we add this dynamic module, if we try to start NGINX it won't load, complaining about the missing module (obviously), so next thing to do is obtain the community edition tarball and the module.</p>



<p class="wp-block-paragraph">NGINX can be obtained from <a href="http://nginx.org/en/download.html">http://nginx.org/en/download.html</a>; the latest version today (13 January 2022) is <a href="http://nginx.org/download/nginx-1.21.5.tar.gz">1.21.5</a>. Extract the tarball to a suitable location, ideally on the CentOS box you're planning to use.</p>



<p class="wp-block-paragraph">Weibin Yao(姚伟斌) helpfully maintains a git repo for the HTTP Substitutions Filter dynamic module (and a few other useful modules). Grab a zipped clone of the repo from <a href="https://github.com/yaoweibin/ngx_http_substitutions_filter_module">https://github.com/yaoweibin/ngx_http_substitutions_filter_module</a> (click green Code -&gt; copy the Download ZIP link and download that to your server). Extract the git <code>master.zip</code> to the same root folder as your freshly extracted NGINX tarball in a <code>ngx_http_substitutions_filter_module</code> subfolder.</p>



<p class="wp-block-paragraph"><code>cd</code> to the <code>nginx-1.21.5</code> folder. The salient info from <code>nginx -V</code> can then be incorporated into a new <code>make</code> build command:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>/nginx/nginx-1.21.5# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-dynamic-module=ngx_http_substitutions_filter_module</pre>



<p class="wp-block-paragraph">Once done (and you'll probably have various errors you'll need to resolve by installing various packages, as I did) go into the newly created <code>objs</code> subfolder. There you'll see a few freshly-compiled files including <code>ngx_http_subs_filter_module.so</code> which you must copy to the <code>/usr/lib64/nginx/modules</code> folder.</p>



<p class="wp-block-paragraph">I tend to keep the old versions and rename the .so file with its compiled version on the end, then make a symlink with NGINX's expected module name to the current-version file in the same folder: <code>ln -s ngx_http_subs_filter_module-1.21.5.so ngx_http_subs_filter_module.so</code> </p>



<p class="wp-block-paragraph">And with that, you're pretty much finished. Start up NGINX and it should work.</p>



<hr class="wp-block-separator">



<h3 class="wp-block-heading" id="compiled-so-dynamic-modules">For convenience, here's the latest few versions of the module, for those who haven't the time or ability to compile themselves:</h3>



<ul class="wp-block-list"><li><a href="https://chriswoods.co.uk/files/ngx-httpsubsfiltermodule/ngx_http_subs_filter_module-1.21.5.so">ngx_http_subs_filter_module.so - version 1.21.5</a></li><li><a href="https://chriswoods.co.uk/files/ngx-httpsubsfiltermodule/ngx_http_subs_filter_module-1.21.3.so">ngx_http_subs_filter_module.so - version 1.21.3</a></li><li><a href="https://chriswoods.co.uk/files/ngx-httpsubsfiltermodule/ngx_http_subs_filter_module-1.20.1.so">ngx_http_subs_filter_module.so - version 1.20.1</a></li></ul>



<p class="wp-block-paragraph">NB: these will almost certainly only work on CentOS 7, and the compiled flags (options) <em>must</em> match those of the version of nginx installed, including for all dynamic modules. If you previously compiled yourself, or obtained a precompiled build from a different yum repository (<a href="http://nginx.org/en/linux_packages.html#RHEL-CentOS">I use nginx's own yum repository</a>) then your mileage will significantly vary. <a href="https://serverfault.com/questions/62026/how-to-know-from-which-yum-repository-a-package-has-been-installed">You can use repoquery on the commandline to find out which repository your system used</a>. Other guides to use NGINX's own repo to install it on CentOS are <a href="https://www.linuxbabe.com/nginx/install-nginx-mainline-version-centos7">available</a> <a href="https://www.knot35.com/installing-and-configuring-nginx-mainline-branch-on-centos-7/">online</a>. Some guides <a href="https://phoenixnap.com/kb/how-to-install-nginx-on-centos-7#ftoc-heading-3">recommend the EPEL repo</a> but I prefer to go direct to NGINX's own repo for this.</p>



<p class="wp-block-paragraph"><strong>Any questions or suggestion for improvements, or spotted a mistake? Please drop me a comment!</strong></p>
<p>The post <a href="https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/">Compiling the HTTP Substitutions Filter module for NGINX on CentOS 7</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2022/01/nginx-ngx-http-substitutions-filter-module-centos-7/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Guide: Creating more professional livestreams with OBS &#038; VoiceMeeter</title>
		<link>https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/</link>
					<comments>https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/#comments</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Fri, 02 Apr 2021 15:47:35 +0000</pubDate>
				<category><![CDATA[Miscellaneous Whatnots]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=774</guid>

					<description><![CDATA[<p>I've used VoiceMeeter for years. It can be confusing at first, but its powerful features make it an invaluable tool. During this time, quite a few people have asked me about how to configure VoiceMeeter and OBS for their own streaming needs. More recently, questions about setting up a livestream or podcast streaming setup for &#8230; <a href="https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/" class="more-link">Continue reading<span class="screen-reader-text"> "Guide: Creating more professional livestreams with OBS &#38; VoiceMeeter"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/">Guide: Creating more professional livestreams with OBS &amp; VoiceMeeter</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I've used VoiceMeeter for years. It can be confusing at first, but its powerful features make it an invaluable tool. </p>



<p class="wp-block-paragraph">During this time, quite a few people have asked me about how to configure VoiceMeeter and OBS for their own streaming needs. More recently, questions about setting up a livestream or podcast streaming setup for going live on the web-based <a href="https://melonapp.com?ref=christopherwoods+melon">Melon</a> and more fully-fledged <a href="https://restream.io/join/chrisw">Restream.io</a> services prompted me to update and publish a guide I'd had in my drafts for some time. </p>



<p class="wp-block-paragraph">If you're a PC streamer, it's worth familiarising yourself with OBS and VoiceMeeter. This combo is really useful and opens up a tremendous amount of flexibility. </p>



<p class="wp-block-paragraph">There's a lot I haven't covered in this first guide. I've barely scratched the surface of optimising OBS for recording and streaming, particularly as there is so much to cover depending on whether you are Intel/AMD or NVidia/AMD for graphics, whether you have one or two machines for presenting/gaming and streaming... NDI also creates more possibilities in this regard.</p>



<p class="wp-block-paragraph">And with regard to VoiceMeeter, there's also more to cover - VBAN (low latency, uncompressed networked two-way audio), VoiceMeeter's processing and effects, the wonderful virtual insert feature which lets you route audio into a <a href="https://www.reaper.fm/">DAW</a> via ASIO and back into VoiceMeeter as an insert... All incredibly powerful features. </p>



<p class="wp-block-paragraph">I'll write further guides covering these - please leave a comment or tweet me with what you'd like to see. Likewise, if you spot any errors, please leave a comment or contact me on social media.</p>



<span id="more-774"></span>



<h2 class="wp-block-heading">What is VoiceMeeter?</h2>



<p class="wp-block-paragraph">Think of <a href="https://vb-audio.com/Voicemeeter/banana.htm">VoiceMeeter</a> and similar tools as a black box sat between the computer's real inputs and outputs. <em>On Mac and Linux, <a href="https://existential.audio/blackhole/">BlackHole</a>, <a href="https://rogueamoeba.com/loopback/">LoopBack</a>, <a href="https://rogueamoeba.com/freebies/soundflower/">Soundflower</a> and <a href="https://jackaudio.org/">JACK</a> are popular equivalents.</em> A primary benefit of VoiceMeeter is it abstracts the operating system's audio inputs and outputs from physical microphone/line inputs and speaker outputs, and lets you transparently use multiple devices for input and/or output.</p>



<p class="wp-block-paragraph">'Real' audio input sources (like mics) are selected on a VoiceMeeter "input". After you've routed, adjusted gains or applied FX to the audio inside the VoiceMeeter black box, you can use that audio in other applications by selecting a VoiceMeeter "output" as the microphone source - even going back in to the Windows mic input. You can also route audio to busses and produce multiple mixes for different virtual and physical outputs.</p>



<p class="wp-block-paragraph">As part of this, Windows becomes just another audio input/output source. You route Windows' speakers output to a VoiceMeeter Input, select a Voicemeeter Output as Windows' mic, and route the virtual audio around in the black box using the VoiceMeeter control panel. Learning curve is a little steep, but it's incredibly flexible!</p>



<p class="wp-block-paragraph">A very basic setup guide for Windows desktop audio and mic input is below, plus a more complex configuration. Getting your head round this opens up a new dimension of flexibility for home production.</p>



<p class="wp-block-paragraph"><em>For the following guides, they assume you are using a fairly recent PC (Windows 10 recommended). OBS and VoiceMeeter will run on Windows 7 and Windows 8 but some steps involve different dialogs or Windows settings. For Mac, you need to use entirely different audio routing software like BlackHole - I use PC myself but I can write a Mac guide if you're interested. I expect someone's already done some good guides on using SoundFlower or BlackHole anyway.</em></p>



<hr class="wp-block-separator">



<h2 class="wp-block-heading"><strong>Direct video, VoiceMeeter for audio</strong></h2>



<p class="wp-block-paragraph">You can always use VoiceMeeter for microphone audio while selecting the HDMI-to-USB capture device (or capture card) as your webcam source into services like <a href="https://restream.io/join/chrisw">Restream</a>/<a href="https://melonapp.com/?ref=christopherwoods+melon">Melon</a> (which use the browser API) or any service which supports webcam and audio selection. This is probably the 'happy medium' for beginners to start with.</p>



<p class="wp-block-paragraph">The main prerequisite is for your capture card to expose the incoming video signal as a virtual USB device - not all devices can do that (in which case you have to use OBS).</p>



<p class="wp-block-paragraph">A big advantage of putting your mic through VoiceMeeter is that it offers built-in processing and effects - compressor, gate, delay and other FX like reverb etc, all of which you can apply to your mic before presenting to your streaming application or service. This is very useful if you don't have a physical mixer, if you're in a noisy environment or if you to control your audio levels and make them more professional with some compression.</p>



<p class="wp-block-paragraph">If you want to try that, just follow steps 1 and 2 - "<strong>VoiceMeeter initial setup</strong>" and "<strong>Adding and routing a mic through VoiceMeeter</strong>" - below.</p>



<p class="wp-block-paragraph">If you install VoiceMeeter but decide you don't want to use it for the time being, you can leave it installed but inactive. Just deselect the "A1" Hardware Out device, and in Windows Sound Settings, change your speakers and mic devices back to what they were before.</p>



<hr class="wp-block-separator">



<h2 class="wp-block-heading"><strong>OBS video, VoiceMeeter audio</strong></h2>



<p class="wp-block-paragraph">I use the VoiceMeeter and OBS method. It's more complex to set up, but much more flexible as your needs grow, and gives you the ability to make a local recording in your choice of quality while simultaneously streaming. In future should you want to use another service, you can also use OBS to stream directly to one or more services with no significant changes to your setup.</p>



<p class="wp-block-paragraph">The guide below assumes you have the HDMI to USB capture device connected and your DSLR is outputting video from its HDMI at the correct resolution and frame rate.</p>



<p class="wp-block-paragraph"><strong>Your signal path will be:</strong></p>



<ul class="wp-block-list"><li>Camera - HDMI capture device - OBS Video Capture Device - OBS Virtual Camera output presented to app/service</li><li>Mic - VoiceMeeter - OBS - Audio Input Capture of "VoiceMeeter Output" - "Voicemeeter Aux Input" virtual output device presented to app/service</li></ul>



<hr class="wp-block-separator">



<p class="wp-block-paragraph">To install VoiceMeeter, and use it to get audio from OBS to send to your application/restreaming service:</p>



<h2 class="wp-block-heading">1. <strong>VoiceMeeter initial setup</strong></h2>



<ul class="wp-block-list"><li>Install <a href="https://vb-audio.com/Voicemeeter/banana.htm">VoiceMeeter Banana</a> or <a href="https://vb-audio.com/Voicemeeter/potato.htm">VoiceMeeter Potato</a> and reboot.</li><li>In Windows Sound Settings, choose "VoiceMeeter Input" as your output device (speakers). Choose "Voicemeeter Output" as your Input device (mic).</li><li>In the VoiceMeeter control panel, select your actual sound card as the A1 Hardware Out device (top-right corner). For example, mine might be "WDM: Realtek Digital Output".</li><li>On the "Virtual Inputs" section, click "A1" on the <em>Voicemeeter VAIO</em> and <em>Voicemeeter AUX</em> channel strips. This tells VoiceMeeter to route desktop audio to both the "VoiceMeeter Output" and "VoiceMeeter Aux Output" Windows devices.</li></ul>



<p class="wp-block-paragraph">Play a YouTube video to check you can hear it OK; you should see green bars bouncing up and down on the "Voicemeeter VAIO" and first "Physical" fader in the Master Section on the right hand side of the VoiceMeeter control panel.</p>



<h2 class="wp-block-heading">2. <strong>Adding and routing a mic through VoiceMeeter</strong></h2>



<ul class="wp-block-list"><li>On the leftmost fader, left-click "Hardware Input 1" and select your 'real' microphone source from the list, e.g. "WDM: Microphone (USB Mic)" - you should see audio levels on the meter. <em>This name will change depending on your device.</em></li><li>Underneath, next to the green volume strip labelled "Fader Gain", click the "B1" button and it will light up. That routes the microphone audio straight through VoiceMeeter and out of the "VoiceMeeter Output" auxiliary virtual output.</li></ul>



<p class="wp-block-paragraph">Congratulations, you've now routed your mic and PC sound through VoiceMeeter!</p>



<p class="wp-block-paragraph">If you look back in the Windows Sound settings dialog, with VoiceMeeter Input and VoiceMeeter Output as your speaker and mic devices, you should see the volume bars bouncing as normal when you talk into the mic and play audio on your PC.</p>



<h2 class="wp-block-heading">3. <strong>OBS Settings</strong></h2>



<p class="wp-block-paragraph">I assume here a canvas resolution of 1920x1080 and 60 fps. Sony's A6000 range are commonly used - for example, the A6300 needs to be <a href="https://helpguide.sony.net/ilc/1540/v1/en/contents/TP0000808675.html?search=hdmi">set to 1080p</a> and <a href="https://helpguide.sony.net/ilc/1540/v1/en/contents/TP0000824638.html?search=hdmi">60 fps</a> (if you're US - 50 fps if UK/Euro). Other cameras like Canon (I use a 7D) can output more resolutions and allow you to switch between UK/EU and US standards; I would always recommend the highest possible input frame rate and at least 1920x1080.</p>



<p class="wp-block-paragraph">Go into OBS settings and configure as follows:</p>



<ul class="wp-block-list"><li><em>OBS Settings -&gt; Audio -&gt;</em> Advanced - Monitoring Device: VoiceMeeter Aux Input (sending OBS monitoring audio to VoiceMeeter's auxiliary input)</li><li><em>OBS Settings -&gt; Video -&gt;</em> Base (Canvas) Resolution: 1920x1080</li><li><em>OBS Settings -&gt; Video -&gt;</em> Output (Scaled) Resolution: 1920x1080</li><li>Common FPS Values: 50 or 60 <em>(depending on camera model)</em>.You can of course use 24 fps for a more filmic look if you want, it's also less demanding to record and process. Just set the camera accordingly and adjust the frame rate again in OBS settings.</li></ul>



<h2 class="wp-block-heading">4. <strong>OBS main interface</strong></h2>



<p class="wp-block-paragraph">In OBS, right-click the Sources box and add new sources to your empty Scene:</p>



<ul class="wp-block-list"><li><em>Add -&gt;</em> Video Capture Device; name it sensibly.</li><li>In the dialog that opens, select the actual capture device from the Device dropdown list, the preview should show your DSLR video. You may need to configure its settings to match the camera output. <em>My cheap HDMI USB adapter requires me to reselect the resolution and FPS in that dialog.</em></li><li><em>Add -&gt;</em> Audio Input Capture; name it sensibly and select "VoiceMeeter Output" in the dialog that appears. ("VoiceMeeter Output" is the mic being routed to B1.)This will let you record your mic in OBS, useful in future.</li><li><em>Add -&gt;</em> Audio Output Capture; name it sensibly and select "VoiceMeeter Input" in the dialog that appears. ("VoiceMeeter Input" is your desktop audio going in to VoiceMeeter.)This will let you record desktop audio and remote parties, useful in future.</li></ul>



<h2 class="wp-block-heading">5. <strong>Final checks</strong></h2>



<p class="wp-block-paragraph">When you talk into the mic, you should see:</p>



<ul class="wp-block-list"><li>Audio levels on VoiceMeeter's Hardware Input 1 channel strip</li><li>Audio levels on OBS Audio Mixer panel</li></ul>



<p class="wp-block-paragraph">On the main OBS canvas you should see the HDMI output of your DSLR. It may be smaller, offset or not taking up the whole of the canvas, if so click on it (red outline appears around it) and press <strong>Ctrl+F</strong> to Fit to Screen. </p>



<p class="wp-block-paragraph">Make sure you've hidden any on screen display the camera produces; my Canon will show various OSD stuff on the HDMI output unless I cycle through them to hide the OSD using the back panel button.</p>



<h2 class="wp-block-heading">6. <strong>Enable OBS Virtual Camera</strong></h2>



<p class="wp-block-paragraph">Whereas previously you needed to install the obs-virtualcam plugin, OBS v26 includes a virtual camera out of the box - all you have to do is click "Start Virtual Camera".</p>



<p class="wp-block-paragraph">In the browser, on the interface of your streaming app or service, choose "OBS Virtual Camera" from the list of webcam sources and you should see a live preview of whatever OBS is outputting. Choose "Voicemeeter Output" as your microphone source. <strong>You're good to go.</strong></p>



<p class="wp-block-paragraph">This setup will also work for Zoom, Teams, Skype... Anything which lets you choose webcam and microphone device.</p>



<p class="wp-block-paragraph">You can also do local tests, record clips, check lipsync and add filters to sources to delay them and match them up, add graphics, lower thirds, colour grade the video with LUTs or RGB adjustment, chromakey / greenscreen yourself, add other video sources or capture areas of the screen... So much possibility <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/">Guide: Creating more professional livestreams with OBS &amp; VoiceMeeter</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2021/04/guide-creating-more-professional-livestreams-with-obs-voicemeeter/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Scripted conversion of HyperDeck Studio ProRes videos to x264 with burned-in timecode</title>
		<link>https://chriswoods.co.uk/2020/07/scripted-conversion-of-hyperdeck-studio-prores-videos-to-x264-with-burned-in-timecode/</link>
					<comments>https://chriswoods.co.uk/2020/07/scripted-conversion-of-hyperdeck-studio-prores-videos-to-x264-with-burned-in-timecode/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 20 Jul 2020 11:21:52 +0000</pubDate>
				<category><![CDATA[Audiogeekery]]></category>
		<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[batch script]]></category>
		<category><![CDATA[Blackmagic]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[FFprobe]]></category>
		<category><![CDATA[HyperDeck]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[ProRes]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Timecode]]></category>
		<category><![CDATA[transcoding]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=760</guid>

					<description><![CDATA[<p>This article discusses how to loop through a folder of source files, manipulating the audio tracks, suitably encoding the video and burning text and timecode in the video.</p>
<p>The post <a href="https://chriswoods.co.uk/2020/07/scripted-conversion-of-hyperdeck-studio-prores-videos-to-x264-with-burned-in-timecode/">Scripted conversion of HyperDeck Studio ProRes videos to x264 with burned-in timecode</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Recently I worked on a project where the output of a vision and sound mixer was recorded to a HyperDeck for later review. The setup was referenced to master clock timecode from a Signal Pulse Generator (SPG), so the HyperDeck fortunately also embedded the timecode as a metadata track in its ProRes recordings.</p>



<p class="wp-block-paragraph">I received a request to generate viewable files from the ProRes source, and burning the timecode on-screen (as you see with film rushes/dailies) was considered a good consistent reference for notetaking and discussion.</p>



<p class="wp-block-paragraph">The requirement was to accomplish this without needing to use expensive NLE software or traipse into the office each night to use an edit suite. This session was in a hired facility miles from my usual workplace and I only had a Windows 10 laptop for company. But all we need is FFmpeg and FFprobe...</p>



<span id="more-760"></span>



<p class="wp-block-paragraph">First off, ProRes from HyperDecks. It happily records to ProRes but the file structure is slightly unusual - they contain 16 mono audio channels (in DNxHD mode they only record 2) and will obviously be the same video standard as your input signal - in my case, 1080p50. </p>



<p class="wp-block-paragraph">Remapping the mono channels to a single stereo pair is easy in FFmpeg. Video wise, you <em>may </em>need to deinterlace your source footage during conversion if you're working in an HD broadcast workflow. I recommend ffmpeg's bwdif algorithm for excellent, quick results and <a href="https://chriswoods.co.uk/2019/05/frameserving-premiere-pro-cc2019-ffmpeg/">I explained optimal deinterlacing with bwdif in a previous post</a>.</p>



<p class="wp-block-paragraph">On the HyperDeck Pro 2 (and presumably the Studio 12G and above) <a href="https://forum.blackmagicdesign.com/viewtopic.php?f=4&amp;t=71222">the DNxHD220 codec is used</a>, which doubles your output filesize vs. 4:2:2 ProRes LT (~220 Mbps vs. 105 Mbps). </p>



<p class="wp-block-paragraph">If you have a specific need to record DNxHD, consider I would still recording ProRes and transcoding. I recommend ProRes LT as <a href="https://www.4kshooters.net/2015/01/26/choose-the-version-of-prores-best-suited-to-your-project/">a filesize, quality and compatibility compromise</a> - unless you have multiple large SSDs to accommodate long recording sessions.</p>



<hr class="wp-block-separator">



<p class="wp-block-paragraph">I didn't have access to many tools or NLE software in this situation, so had to work with what was available - FFmpeg and FFprobe on Windows work fine for this. <a href="https://ffmpeg.zeranoe.com/builds/">Download a Git build from Zeranoe's site</a> or <a href="https://www.reddit.com/r/ffmpeg/comments/916iy8/ffmpeg_useful_links/">consult the oracle</a>.</p>



<p class="wp-block-paragraph">The "without installer" version of MediaInfo is also invaluable - download it from their <a href="https://mediaarea.net/en/MediaInfo/Download/Windows">Windows builds page</a>. Don't use the auto installer, it bundles IronSource adware which they do disclose. Instead consider donating a few quid if you find it's saved you time and energy.</p>



<p class="wp-block-paragraph">I created a batch script to do the following:</p>



<ol class="wp-block-list"><li>Starting in the parent folder, loop through files in a "source" subfolder</li><li>Extract each file's frame timecode with ffprobe, saving in a file alongside for later use</li><li>Create an "x264" subfolder (if not already existing)</li><li>Do some filename and folder substitution/rewriting, changing generic "Capture0001", "Capture0002" names to something more meaningful</li><li>Burn in the previously extracted per-frame timecode and also apply a static datestamp to the video</li><li>Use FFmpeg's channel map feature to discard the unused audio pairs (as we only embedded one split leg stereo mix to the first SDI audio pair), and transcode to AAC at a usable quality</li><li>Encode DXVA-compliant H.264 video (with FFmpeg's <em>libx264</em>) which would play on any device/phone/tablet with hardware acceleration</li><li>Echo status back to the terminal while going through the loop</li></ol>



<p class="wp-block-paragraph">It's a bit rough and ready, there's comments for a few things through the script (though not fully commented). <strong>Caveats:</strong></p>



<ol class="wp-block-list"><li>For the sake of time, I resorted to manually editing references to days (the example script is the version for outputting files createed on 'day 8' of the shoot). <br><em>You could instead parse the file path, extract the day number or other relevant variable from it then do a substitution to make the output naming fully automated.</em></li><li>You must change the FFmpeg <em>drawtext</em> filter text and the <em>outputfile:Capture</em> substitution text so filenames are created correctly</li><li>This only works on Windows due to various batch scripting-specific things (variables, substitutions and <a href="https://ss64.com/nt/syntax-args.html">parameter extensions</a>). You could adapt for Linux/Mac version without too much work.</li><li>I've used a worker loop and I call labels (think <em>subroutine</em>) to do the encoding and finish cleanly once all source files are transcoded.</li><li>This script should be a <code>.bat</code> file, accompanied by <code>ffmpeg.exe</code> and <code>ffprobe.exe</code> </li></ol>



<p class="wp-block-paragraph">My example script:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="msdos" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset="christopher" data-enlighter-title data-enlighter-group>@echo Day 8 encoder
@echo don't forget to change drawtext as well as paths!
@echo off
@rem https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-files-with-ffmpeg
@rem echo "%~dpn1"
@rem https://stackoverflow.com/a/2772498
@rem for %%a in ("*.mov") do (

setlocal ENABLEDELAYEDEXPANSION
for %%a in (source\*.mov) do (
echo --- Going in.
echo.
echo %%a 
  call :mainloop %%a
)
echo.
echo --- All files transcoded.
echo.
pause
exit /b

@rem goto:eof

:mainloop 
echo.
echo -- File being processed: %1
"%~dp0\ffprobe" -hide_banner -loglevel fatal -print_format default=nk=1:nw=1 -show_entries format_tags=timecode %1 &gt; %1-timecode.txt
set /p rawtc= &lt; %1-timecode.txt
echo raw timecode: %rawtc%
set escapedtc=%rawtc::=\:%
echo escaped timecode: %escapedtc%

echo filename before substitution: %1
set sourcefile=%1
set outputfile=%sourcefile:.mov=-timecoded.mp4%
set outputfile=%outputfile:source\=x264\%
set outputfile=%outputfile:Capture=Day8-Capture%
echo filename after substitution: %outputfile%
echo %outputfile%
@rem del %1-timecode
if not exist "x264" mkdir "x264"
"%~dp0\ffmpeg" -hide_banner -i "%1" -c:v libx264 -crf 20 -preset faster -profile:v high -level 4.1 -vf "format=yuv420p,drawtext=fontfile='C\:/WINDOWS/fonts/lucon.ttf':text='Day 8':fontsize=48:fontcolor=white@0.2:x=20:y=20,drawtext=fontfile='C\:/WINDOWS/fonts/lucon.ttf':text='TC\ ': timecode='%escapedtc%':rate=50:fontsize=64:fontcolor='white@0.75:x=(w-text_w)/2:y=h-th-20" -tune film -map_metadata 0 -c:a aac -b:a 192k -ar 48000 -map_channel 0.2.0 -map_channel 0.2.1 -ac 2 %outputfile%
echo -- Transcode done: %1 
echo.</pre>



<p class="wp-block-paragraph">There's a few messy comments and leftovers from prior tests. Hacking together stuff like this always reminds me of the <a href="https://www.computerhope.com/issues/ch001313.htm">various ways you can comment in batch scripts</a> and how they behave differently.</p>



<p class="wp-block-paragraph">Let me know if you find this useful, if you find an issue or if you can suggest a better way of doing any of this!</p>
<p>The post <a href="https://chriswoods.co.uk/2020/07/scripted-conversion-of-hyperdeck-studio-prores-videos-to-x264-with-burned-in-timecode/">Scripted conversion of HyperDeck Studio ProRes videos to x264 with burned-in timecode</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2020/07/scripted-conversion-of-hyperdeck-studio-prores-videos-to-x264-with-burned-in-timecode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Postfix &quot;unavailable. unsupported dictionary type 1111&quot; on restart? Check your brackets!</title>
		<link>https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/</link>
					<comments>https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 10 Feb 2020 00:28:03 +0000</pubDate>
				<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Hints and Tips and Tricks]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=756</guid>

					<description><![CDATA[<p>I was recently modifying a Postfix config to do some debug logging of transactions for a specific IP addresses. To do this, I modified the smtp and smtps services in master.cf to get the most verbose logging possible. However, I'd failed to remember to encapsulate the IPv6 address with brackets. And so, I got this &#8230; <a href="https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/" class="more-link">Continue reading<span class="screen-reader-text"> "Postfix "unavailable. unsupported dictionary type 1111" on restart? Check your brackets!"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/">Postfix &quot;unavailable. unsupported dictionary type 1111&quot; on restart? Check your brackets!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I was recently modifying a Postfix config to do some debug logging of transactions for a specific IP addresses. To do this, I modified the <code>smtp</code> and <code>smtps</code> services in <code>master.cf</code> to get the most verbose logging possible. </p>



<p class="wp-block-paragraph">However, I'd failed to remember to encapsulate the IPv6 address with brackets. And so, I got this in the log after restarting Postfix:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset="christopher" data-enlighter-title data-enlighter-group>Feb  5 18:28:29 l03 postfix/smtpd[21037]: warning: 1111:2222::7777:8888 is unavailable. unsupported dictionary type: 2a04
Feb  5 18:28:29 l03 postfix/smtpd[21037]: warning: 1111:2222::7777:8888: table lookup problem</pre>



<p class="wp-block-paragraph">(To confuse me, that address was also the one listed in a <code>client_checks.cidr</code> file I'd put together which was also part of my investigation).</p>



<p class="wp-block-paragraph">And when that client was attempting to connect to send an email, I was seeing this:</p>



<span id="more-756"></span>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>Feb  5 18:28:22 l03 postfix/smtpd[20846]: Anonymous TLS connection established from unknown[1111:2222::7777:8888]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Feb  5 18:28:22 l03 postfix/smtpd[20846]: NOQUEUE: reject: RCPT from unknown[1111:2222::7777:8888]: 554 5.7.1 Client host rejected: cannot find your reverse hostname, [1111:2222::7777:8888]; from=&lt;chrisw@example.com&gt; to=&lt;testaddress@example2.com&gt; proto=ESMTP helo=&lt;webmail.example.com&gt;
Feb  5 18:28:22 l03 postfix/smtpd[20846]: disconnect from unknown[1111:2222::7777:8888]
Feb  5 18:28:29 l03 postfix/smtpd[21037]: error: unsupported dictionary type: 1111
Feb  5 18:28:29 l03 postfix/smtpd[21037]: warning: 1111:2222::7777:8888 is unavailable. unsupported dictionary type: 1111
Feb  5 18:28:29 l03 postfix/smtpd[21037]: warning: 1111:2222::7777:8888: table lookup problem</pre>



<p class="wp-block-paragraph">However, this was actually because of a stupidly simple omission in <code>master.cf</code>, the non-wrapped IPv6 address. Postfix needs IPv6 addresses to be wrapped in square brackets in master.cf. Oops.</p>



<p class="wp-block-paragraph">Once I wrapped square brackets around the variables in the <code>smtp</code> and <code>smtps</code> services, it looked like this (and the error totally disappeared):</p>



<p class="wp-block-paragraph"><code>smtp    inet    n       -       n       -       -       smtpd -o smtpd_sasl_auth_enable=yes -o debug_peer_level=10 -o debug_peer_list=[1111:2222::7777:8888]</code></p>



<p class="wp-block-paragraph"><code>smtps   inet    n       -       n       -       -       smtpd<br>-o debug_peer_level=10 -o debug_peer_list=[1111:2222::7777:8888]</code></p>



<p class="wp-block-paragraph">It's always worth checking how to include IPv6 addresses in Postfix. Most cases, it doesn't care, but for <code>master.cf</code> it's incredibly strict about syntax.</p>
<p>The post <a href="https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/">Postfix &quot;unavailable. unsupported dictionary type 1111&quot; on restart? Check your brackets!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2020/02/postfix-unavailable-unsupported-dictionary-type-1111-on-restart-check-your-brackets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to make read-only &#039;virtual&#039; exFAT directories for FTP users on Synology NAS running DSM 6</title>
		<link>https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/</link>
					<comments>https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Thu, 28 Nov 2019 13:26:00 +0000</pubDate>
				<category><![CDATA[Miscellaneous Whatnots]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=736</guid>

					<description><![CDATA[<p>Update, December 2019: installing third-party scripts or package managers which run on boot may overwrite the file /etc/rc.local which I initially recommended using. I've revised this article to recommend a better autostart script directory; feel free to borrow the simple start/stop script I included at the end of this post. I recently purchased a Synology &#8230; <a href="https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/" class="more-link">Continue reading<span class="screen-reader-text"> "How to make read-only 'virtual' exFAT directories for FTP users on Synology NAS running DSM 6"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/">How to make read-only &#039;virtual&#039; exFAT directories for FTP users on Synology NAS running DSM 6</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em><strong>Update, December 2019</strong>: installing third-party scripts or package managers which run on boot may overwrite the file <code>/etc/rc.local</code> which I initially recommended using. I've revised this article to recommend a better autostart script directory; feel free to borrow the simple start/stop script I included at the end of this post.</em></p>



<p class="wp-block-paragraph">I recently purchased a Synology NAS running DSM 6, and sharing directories via FTP is easy. In Control Panel, make sure the Shared Folder is defined, then using File Station, define access permissions (read, write, execute) for each group or user.</p>



<p class="wp-block-paragraph">If you want an additional user for FTP access, you make your user (or make a group then add your user to that) then Allow access to the FTP application inside Control Panel -&gt; Users or Groups. The permissions are inherited, UNIX style, to effectively restrict rights over folders and their files.</p>



<p class="wp-block-paragraph">So far, so simple; this works great for everything on the NAS' internal storage, because by default it uses <a href="https://opensource.com/article/17/5/introduction-ext4-filesystem">EXT4</a> filesystem which supports file &amp; directory permissions and ACLs. <em>On the terminal, a plus symbol at the end of an <code>ls</code> directory listing denotes the file or directory has additional ACLs applied, which can overrule standard UNIX permissions.</em></p>



<p class="wp-block-paragraph">However, on any external drives connected to the Synology, for example a large USB3 drive for temporary storage of additional material, those drives may use file systems other than EXT4 so they're accessible by, say, Windows PCs. In this case, given we're probably also dealing with very large files, exFAT is a sensible choice - and the Synology does support exFAT, albeit there's a <a href="https://xpenology.com/forum/topic/6715-exfat-for-dsm-50-amp-dsm-60/">long story</a> <a href="https://www.reddit.com/r/synology/comments/4msbh1/exfat_support_now_available/">about that</a>. <em>tl;dr - pay $4 and just get the official <a href="https://www.synology.com/en-uk/dsm/packages/exFAT">exFAT Access package</a> from Synology through the Package Manager, it's zero-hassle and has full read/write support. More info on supported external devices <a href="https://www.synology.com/en-global/knowledgebase/DSM/help/DSM/AdminCenter/system_externaldevice_devicelist">here</a>.</em></p>



<p class="wp-block-paragraph">One thing exFAT volumes lack when used through the Synology is support for any UNIX file and directory permissions. Normally that's acceptable, but if you're sharing files to other users, either via NFS, SMB or FTP, you may wish to use permissions to prevent accidental deletion - and on an exFAT volume, this means you can't.</p>



<p class="wp-block-paragraph">But we <em>can</em> do read-only access with exFAT! It just requires some creative thinking...</p>



<span id="more-736"></span>



<p class="wp-block-paragraph">I wanted to share some files with a group of users which were in a directory on some USB media. By default, the Synology mounts USB drives using its own scripted methods. In the DSM web interface, in the File Station app you see them as "usbshare1" and "usbshare2". In the filesystem (via SSH or telnet - but you're not using telnet, right?) it's <code>/volumeUSB1</code> and <code>/volumeUSB2</code> - if there's multiple partitions, it uses the <code>/volumeUSB1/usbshare1-1</code>, <code>/volumeUSB1/usbshare1-2</code> filesystem structure.</p>



<p class="wp-block-paragraph"><em>Sidenote - you can alias 'usbshare1' and 'usbshare2' to better names by just renaming them inside File Station. The Synology will remember this by saving the name mapping in the file <code>/usr/syno/etc/usbno_guid.map</code>. However, sometimes DSM will also get confused, particularly if you're unplugging and replugging drives often, <a href="https://www.reddit.com/r/synology/comments/56t0mk/usbshare1_name_changed_to_usbshare2_how_do_i/dck4u1e/">but you can easily fix it</a>.</em></p>



<p class="wp-block-paragraph">If I share a subdirectory via FTP, annoyingly the entire folder structure is shown, including directories the user is not permitted to access (a feature of UNIX permissions). Using traditional symlinks (aka soft links) also doesn't work because they're displayed as shortcuts in an FTP session, and the client cannot ever resolve that link to the correct destination.</p>



<p class="wp-block-paragraph">As I don't wish to expose all potential directories in a folder, the workaround is to use a 'virtual' folder which is actually a mountpoint, combining this with a <a href="https://lwn.net/Articles/281157/">bind mount</a>:</p>



<ol class="wp-block-list"><li>On an SSH session, create a directory in the root of the DSM storage, e.g. <code>/ftp-shared</code></li><li>In File Station (in the DSM web UI) grant the shared FTP user full access rights.</li><li>Create a subdirectory inside it, e.g. <code>/volume1/ftp-shared/catvideos</code>.</li><li>Work out what the file system path to the desired folder on the USB drive is (e.g. <code>/volumeUSB1/usbshare1-2/catvideos/</code>, make a note of it).</li><li>At the command prompt, (your user account will need DSM admin privileges for this), execute the following: <code>sudo mount --bind "/volumeUSB1/usbshare1-2/catvideos/" "/volume1/ftp-shared/catvideos/"</code><ul><li>This creates a bind mount of the location to the target mount point. If you <code>ls</code> the <code>/volume1/ftp-shared</code> folder afterwards, you will notice it's now displayed as highlighted green with full permissions (<code>drwxrwxrwx</code>).</li></ul></li><li>The 'virtual' folder is now accessible, but because the source folder's file system is exFAT, it's wide open with no permissions. What you need to do now is 'remount' that mount as read only. Do this by executing: <code>sudo mount -o remount,ro "/volume1/ftp-shared/catvideos/"</code></li><li>Although the file permissions won't change when you  <code>ls</code> the folder, you will now be unable to modify or delete the files when you access them via the virtual folder. (The 'bound' mount).</li><li>To make this setting permanent and reapply on reboot, you have a couple of options:<ol><li>If you are using 'vanilla' DSM with no additional packages, add those two lines to the <code>/etc/rc.local</code> file - <code>nano /etc/rc.local</code> to open it in the nano editor.</li><li>If you are using Optware, Entware or any other package manager, they commonly use <code>/etc/rc.local</code> to run, and overwrite whatever contents are in <code>rc.local</code>. I lost my original changes when I installed Entware.<br>Instead, make a bash script with a <code>start</code> and <code>stop</code> action, place your mount commands inside that script. and save it in the <code>/usr/syno/etc.defaults/rc.sysv/</code> directory. <em>An example script is included at the end of this article.</em></li></ol></li><li>FTP to the Synology and try to access the folder - because you created the 'ftp-shared' directory at the root, it will appear after logging in, and the virtual mount directory will show beneath that. Done! You should have read-only access to the files in that directory structure.</li></ol>



<p class="wp-block-paragraph">If you need to remove the USB drive, it's wise to unmount this folder (<code>umount /volume1/ftp-shared/catvideos</code>) before unplugging the USB drive, otherwise it may fail to cleanly dismount and show "target is busy" errors.</p>



<p class="wp-block-paragraph">Occasionally you may need to dismount the target folder more aggressively if something is 'stuck' on a file inside; <a href="https://stackoverflow.com/questions/7878707/how-to-unmount-a-busy-device">with standard Linux you can use various methods to identify what is holding the mount open</a>. On Synology devices with their reduced busybox shell Linux build, tools like <code>lsof</code> aren't immediately available, so you can either <a href="https://stackoverflow.com/questions/10796298/how-to-check-open-file-without-lsof">creatively work around it</a> or <a href="https://blog.favo.org/post/144393870336/install-ipkg-tools-on-synology">install third party package managers</a> to add the tools back to your DSM.</p>



<p class="wp-block-paragraph"><em>Beware that some aggressive dismount methods can sometimes cause data loss or NFS access issues.</em></p>



<p class="wp-block-paragraph">Some other uses for bind mounts include <a href="https://www.albertogonzalez.net/how-to-create-a-symbolic-link-to-a-folder-on-a-synology-nas/">mapping directories</a> in one Synology "volume" into a virtual directory in another (e.g., if you expand the storage with more disks and make a second volume, but you decide for DLNA or media server purposes that you need files in one logical location).</p>



<p class="wp-block-paragraph"><a href="https://unix.stackexchange.com/a/198591/15460">For much more detail on bind mounts and what you can do with them, check this wonderfully written Unix Stack Exchange answer.</a></p>



<p class="wp-block-paragraph">Let me know in the comments if you have any problems with this method, I use it without any problems on my Synology 918+ running DSM 6, resharing multiple virtual directories to multiple mount points.</p>



<h3 class="wp-block-heading">Sample script for user-level autostart script at boot</h3>



<p class="wp-block-paragraph">This is a very quick example script for <code>/usr/local/etc/rc.d</code> (as it's inadvisable to use the <code>/etc/rc.local</code> method). You'll need to sudo to root at a shell prompt to write/modify in this directory. Use <code>sudo -i</code> on a Synology to get a root prompt, provided your user account is in the Administrators group in DSM.</p>



<p class="wp-block-paragraph">The script has start and stop functions, as required for startup scripts, but only the start function does anything as that's all I required.</p>



<p class="wp-block-paragraph">As long as it's a viable script (has a shebang, has valid syntax and is CHMODed correctly, e.g. <code>chmod 700 filename.sh</code>) this should run.</p>



<p class="wp-block-paragraph"><em>Remember, to use the bind mount method, the destination directory must exist prior to running the command. Otherwise mount will literally have no place to mount the source directory.</em></p>



<pre class="EnlighterJSRAW" data-enlighter-language="shell" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>#!/bin/sh
# customcommands.sh - a startup script for doing stuff.
# this lives in /usr/local/etc/rc.d
# Recommended to CHMOD to 700

case $1 in
start)
# start stuff here

echo "Executing start tasks."
# example: sudo mount --bind "/volume1/source/path" "/volume1/destination/path"
sudo mount --bind "/volumeUSB1/usbshare1-2/cats/photos" "/volume1/ftphomes/crazycatlady/catphotos" 
sudo mount -o remount,ro "/volume1/ftphomes/crazycatlady/catphotos"
# mount -o remount,ro remounts an existing mount as read-only, irrespective of source filesystem permissions
# This is deal for ExFAT sources as they don't support UNIX permissions.

# Remember, you'll need to unmount all bind mounts first to eject a USB disk. Perhaps a good use for the 'stop' action.

;;
stop)
# stop stuff here

echo "Executing stop tasks."
# Section will be empty unless you want to perform any tasks before rebooting (unmounting anything?).
;;

*)
     echo "Usage: $0 [start|stop]"
;;
esac</pre>



<p class="wp-block-paragraph">You may also be able to have that script live in   <code>/usr/syno/etc.defaults/rc.sysv/</code> , however that directory is a default scripts repository used by DSM 6 which other developers also seem to use. On my DS918+, I have loads of <em>at-boot</em> scripts located in the <code>/usr/syno/etc.defaults/rc.sysv</code> directory, however <code>/usr/local/etc/rc.d</code> <a href="https://community.synology.com/enu/forum/17/post/31687?page=2&amp;sort=oldest"><em>is</em> the best-practice location to store these files</a>.</p>



<p class="wp-block-paragraph"><strong>Irrespective of wherever you save your scripts, <em>ALWAYS make sure you keep a backup</em></strong>. People have remarked about custom files like these sometimes being lost during a DSM upgrade, although the unit should backup and restore the files itself as part of the process.</p>
<p>The post <a href="https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/">How to make read-only &#039;virtual&#039; exFAT directories for FTP users on Synology NAS running DSM 6</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2019/11/how-to-make-read-only-virtual-exfat-directories-for-ftp-users-on-synology-nas-running-dsm-6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Canon Pixma owners: this simple trick can make your printer&#039;s feed rollers grab paper again!</title>
		<link>https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/</link>
					<comments>https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/#comments</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 26 Aug 2019 00:18:49 +0000</pubDate>
				<category><![CDATA[Guides and Tutorials]]></category>
		<category><![CDATA[Hints and Tips and Tricks]]></category>
		<category><![CDATA[Inside The Box]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[pixma]]></category>
		<category><![CDATA[rollers]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=717</guid>

					<description><![CDATA[<p>(Grab an old sponge - yes, seriously) I have a Canon Pixma MG5750, a Currys PC World purchase when I needed a cheap multifunction printer fast. Handy at £45 (another set of genuine ink for it costs the same, go figure). I never expected it to be perfect, I assumed it would at least be &#8230; <a href="https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/" class="more-link">Continue reading<span class="screen-reader-text"> "Canon Pixma owners: this simple trick can make your printer's feed rollers grab paper again!"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/">Canon Pixma owners: this simple trick can make your printer&#039;s feed rollers grab paper again!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(Grab an old sponge - yes, seriously)</em></p>



<p class="wp-block-paragraph">I have a Canon Pixma MG5750, a Currys PC World purchase when I needed a cheap multifunction printer fast. Handy at £45 (another set of genuine ink for it costs the same, go figure). I never expected it to be perfect, I assumed it would at least be able to reliably accomplish basic things <strong>like print text onto paper</strong>.</p>



<p class="wp-block-paragraph">Unfortunately, one of the fundamental printer requirements - loading its own paper during print jobs - was a little lacking with this unit. Research indicates it's sadly a common issue with this range of Canon printers.</p>



<p class="wp-block-paragraph">Soon after buying mine, the paper feed (take-up of paper from the tray into the transport mechanism) started to behave irregularly. Soon after that, I ended up having to nudge each sheet of paper in to the printer, it was unable to take in paper itself. Not convenient.</p>



<p class="wp-block-paragraph">I put up with this for a while but an attempt to print some documents evening pushed me into investigating. The fix, as it turns out, is really simple!</p>



<span id="more-717"></span>



<p class="wp-block-paragraph">The Canon MG5750 (and printers of its ilk) are designed to a price, and that is <em>cheap</em>. All components are nylon and plastic where possible, plastic is flimsy and important components like springs are small and presumably old stock - and this was ultimately the root cause of my problem.</p>



<ul class="wp-block-list">
<li>The symptom: the printer would be unable to take paper in, meaning it would sit and spin its internal rollers helplessly several times before complaining there was no paper loaded.</li>



<li>The cause: a tiny spring, intended to load the paper intake rollers, is inadequately weak. The intake / feed-in rollers just slide around on top of the paper instead of gripping it and pulling it into the print mechanism.</li>



<li>The solution: a bit of sponge (seriously).</li>
</ul>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="768" height="1024" src="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001226-e1566776388859-768x1024.jpg" alt class="wp-image-720 size-full" srcset="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001226-e1566776388859-768x1024.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001226-e1566776388859-225x300.jpg 225w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"> This is the underside of the printer. The paper tray forms the base of the printer when it's slid into place, the grey strips are its guide runners. (<a href="//chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001226-e1566776388859.jpg" data-rel="lightbox-image-0" data-rl_title data-rl_caption title>view larger</a>)</p>
</div></div>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="768" height="1024" src="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001249-e1566776623894-768x1024.jpg" alt class="wp-image-721 size-full" srcset="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001249-e1566776623894-768x1024.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001249-e1566776623894-225x300.jpg 225w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">This is the underside of the printer on its side with the paper tray partway open.</p>



<p class="wp-block-paragraph">What should happen: When you slide the paper tray closed, the black tab at the top of the image (just above the bit of blue plastic you can see against the paper) contacts a protruding black plastic 'leg', which pushes the infeed roller arm up and over the paper as it's inserted. (<a href="//chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001249-e1566776623894.jpg" data-rel="lightbox-image-1" data-rl_title data-rl_caption title>view larger</a>)</p>
</div></div>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="768" height="1024" src="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001302-e1566776999333-768x1024.jpg" alt class="wp-image-722 size-full" srcset="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001302-e1566776999333-768x1024.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001302-e1566776999333-225x300.jpg 225w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">This would be fine, if the retaining spring's opposing force was strong enough. It's a miserably tiny thing. See it near the middle of the photo, just next to one of the two black rubber paper intake rollers? (<a href="//chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001302-e1566776999333.jpg" data-rel="lightbox-image-2" data-rl_title data-rl_caption title>view larger</a>)</p>
</div></div>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="768" height="1024" src="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001343-e1566776661283-768x1024.jpg" alt class="wp-image-724 size-full" srcset="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001343-e1566776661283-768x1024.jpg 768w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001343-e1566776661283-225x300.jpg 225w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">I tried all sorts - wrapping the rollers with small strips of tacky gaffer tape to widen their diameter; pushing up on the underside of the paper tray to try and make them contact the rollers better; I even moved the rubber tracks towards the edge of the wheels to make their edges 'ride up' and contact the paper better. Nothing worked well.</p>



<p class="wp-block-paragraph">In the end, <strong>some sponge</strong> (visible behind the bar supporting the feed rollers) solved the problem! (<a href="//chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001343-e1566776661283.jpg" data-rel="lightbox-image-3" data-rl_title data-rl_caption title>view larger</a>)</p>
</div></div>



<p class="wp-block-paragraph">Before I used the sponge method, moving the grippy rubber bands to the edge of the grooves on the rollers worked, proving it was a simple issue of roller clearance, but it's not ideal. You end up stretching the rubber tracks around the feed rollers, wearing them smooth prematurely and ending up with catastrophic loss of grip, just like excessive camber on F1 cars (ha).</p>



<p class="wp-block-paragraph">There's nothing really you can adjust with these printers; the tension spring was just not good enough to adequately pull the rollers down into contact with the paper. So I went to the Internet for inspiration because I knew I wanted to somehow either add weight to the horizontal bar on which the rollers were mounted, or increase the spring tension.</p>



<p class="wp-block-paragraph">I wanted to avoid removing the tiny tension spring, because they frequently fly off into another dimension, and fortunately I stumbled upon a post by David Camm on <a href="https://www.techadvisor.co.uk/forum/helproom-1/canon-mg5550-paper-loading-problem-4514204/">a TechAdvisor forum thread</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Hi Folks, this is an asy fix, get a sponge, I used the sponge off a dish scourer, you only need half of that, cut it off the scourer part.</p>



<p class="wp-block-paragraph">Now find the paper feeder roller that takes the paper from the tray. (its under the printer behind a panel that has the paper in. You will notice the feeder roller attached to a plastic panel that moves up and down to grip the paper, this roller has a small spring on the side. I noticed there is hardly any force pressing the roller to the paper, hence the problem.</p>



<p class="wp-block-paragraph">Put the sponge behind the piece of plastic away from the rollers taking care not to put it behind the actual rollers. This increases pressure on the roller so it takes the paper every time. just done 150 double sided sheets with no problems. Make sure the plastic holding the roller still moves up and down freely, the sponge should not be so tight as it prevents free movement.My MG550 had this issue from new as well but this spong has fixed it. Its very simple to do. </p>
<cite>DavidCamm on TechAdvisor</cite></blockquote>



<p class="wp-block-paragraph">I realised that, as long as you fitted correctly-sized pieces of sponge snugly, and underneath the part of the bar closest to the tray slide rail (and without it catching in the rotating arm which drives the rollers), this is a beautifully neat solution which solves the problem. </p>



<p class="wp-block-paragraph">An old Dishmatic head was just the right dimensions and with enough pushback thanks to its top layer to give the rollers adequate friction. Any medium density foam or sponge should work fine.</p>



<p class="wp-block-paragraph"><strong>So thanks, David Camm, wherever you may be</strong>! You solved my frustrations and prevented me taking apart my printer in desperation to try and fix. Sometimes the stupidly simple solutions are the best!</p>



<p class="wp-block-paragraph">I recently found that 'Beach Badger' tried the sponge fix with success - check <a href="https://www.youtube.com/watch?v=pCnjSoZI2NA">his video on YouTube</a> demonstrating how quick the fix is, or see below:</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/pCnjSoZI2NA" title="YouTube video player - Beach Badger's demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="wp-block-paragraph">'Helen Spuddulike' <a href="https://www.youtube.com/watch?v=UjMQARvlMOo">also made a video demonstrating another method for cleaning some of the other internal rollers, involving some adhesive tape on a longer piece of cardboard</a>. Her method has the advantage of allowing feed rollers to rotate and effectively self-clean while avoiding disassembly, which could be useful if you're getting dirty marks or ink stains on your paper:</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/UjMQARvlMOo" title="YouTube video player - Helen's printer internal roller cleaning method" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="wp-block-paragraph">'IONHowTo' also has <a href="https://www.youtube.com/watch?v=wLAqAkU3q10">a useful video compiling a few things to check and maintain on printers</a> -- and what not to try (his demo printer is a Canon, but may be useful for owners of other brands):</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/wLAqAkU3q10" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="wp-block-paragraph">These easy but non-obvious foxes do make me wonder how many people have thrown away an otherwise functional printer, just because the roller and tension spring design isn't fit for purpose. I'm really glad that so many people have had success and got their printers back in service, and I really appreciate people commenting and emailing me to let me know <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> On behalf of our planet, thank you for not throwing your printer in the trash!</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="768" src="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001615-e1566776711814-1024x768.jpg" alt class="wp-image-727" srcset="https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001615-e1566776711814-1024x768.jpg 1024w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001615-e1566776711814-300x225.jpg 300w, https://chriswoods.co.uk/wp-content/uploads/2019/08/20190826_001615-e1566776711814-768x576.jpg 768w" sizes="auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px"><figcaption class="wp-element-caption">The paper tray feed intake rollers, viewed from underneath - now being pushed down more firmly thanks to the delicately placed sponge under the support bar.</figcaption></figure>



<p class="wp-block-paragraph">Best thing about this fix is that it's trivial to reach the area once the paper 'cassette' is slid out, and it's easily reversible should you decide you don't want sponge there any more. Prop the printer on your knee on its side and just add the sponge pieces as needed. I went for two rectangular pieces. Secure the sponge with gaffer tape if you're feeling nervous, but it should be fine there forever. </p>



<p class="wp-block-paragraph">Happy printing!</p>
<p>The post <a href="https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/">Canon Pixma owners: this simple trick can make your printer&#039;s feed rollers grab paper again!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2019/08/canon-pixma-paper-feed-roller-problems-diy-sponge-fix/feed/</wfw:commentRss>
			<slash:comments>268</slash:comments>
		
		
			</item>
		<item>
		<title>Dear mailserver operators: PLEASE stop using SSLv3!</title>
		<link>https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/</link>
					<comments>https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/#respond</comments>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Tue, 25 Jun 2019 22:55:29 +0000</pubDate>
				<category><![CDATA[Miscellaneous Whatnots]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA["best practice"]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[sslv3]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://chriswoods.co.uk/?p=696</guid>

					<description><![CDATA[<p>I look after a few email servers and after implementing much stricter encryption settings at the start of the year, I noticed some emails were never making it to accounts - being rejected at the negotiation stage (where the remote server sending the email agrees an encryption protocol and cipher with the local server). I &#8230; <a href="https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/" class="more-link">Continue reading<span class="screen-reader-text"> "Dear mailserver operators: PLEASE stop using SSLv3!"</span></a></p>
<p>The post <a href="https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/">Dear mailserver operators: PLEASE stop using SSLv3!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I look after a few email servers and after implementing much stricter encryption settings at the start of the year, I noticed some emails were never making it to accounts - being rejected at the negotiation stage (where the remote server sending the email agrees an encryption protocol and cipher with the local server).</p>



<p class="wp-block-paragraph">I was puzzled by this. TLS is hardly new, yet these servers were only ever attempting to use SSLv3 and then failing to 'upgrade' to TLS - not even TLS1.0. Poor show.</p>



<p class="wp-block-paragraph">This isn't unique either - I periodically run a script which reports the spread of protocols and ciphers of incoming email connections; here's a sample from one server for the last hour...</p>



<span id="more-696"></span>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>   151 TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384
      1 TLSv1.2 with cipher DHE-RSA-AES128-SHA
      1 TLSv1.2 with cipher DHE-RSA-AES256-SHA256
     52 TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256
     69 TLSv1.2 with cipher AES128-SHA
     86 SSLv3 with cipher DHE-RSA-AES256-SHA</pre>



<p class="wp-block-paragraph">WTF! OK, so the overwhelming number of sending MTAs are using TLS1.2 with a strong cipher, great. <em>Note, NONE are using TLSv1.3.</em> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> But 86 MTAs still using SSLv3 with DHE-RSA-AES256-SHA?! Seriously...</p>


<p>If you run Postfix or equivalent MTA, this oneliner into a bash script will give you a nice tabulated output on demand<span class="footnote_referrer"><a role="button" tabindex="0" onclick="footnote_moveToReference_696_19('footnote_plugin_reference_696_19_1');" onkeypress="footnote_moveToReference_696_19('footnote_plugin_reference_696_19_1');"><sup id="footnote_plugin_tooltip_696_19_1" class="footnote_plugin_tooltip_text">[1]</sup></a><span id="footnote_plugin_tooltip_text_696_19_1" class="footnote_tooltip">I typically filter 'unknown' connections as they're usually connecting clients. If you want to include those, remove the piped section where I grep -v (inverting a match). For the full output, only&nbsp;… <span class="footnote_tooltip_continue" onclick="footnote_moveToReference_696_19('footnote_plugin_reference_696_19_1');">Continue reading</span></span></span><script type="text/javascript"> jQuery('#footnote_plugin_tooltip_696_19_1').tooltip({ tip: '#footnote_plugin_tooltip_text_696_19_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top center', relative: true, offset: [-7, 0], });</script>:</p>


<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>#!/bin/sh
egrep "TLS connection established from.*with cipher" /var/log/maillog | grep -v -E "unknown\[" | awk '{printf("%s %s %s %s\n", $12, $13, $14, $15)}' | sort | uniq -c | sort -</pre>



<p class="wp-block-paragraph">Please mailops, sort it out. SSLv3 needs to be dead already. I understand the pragmatic approach of supporting SSLv3 for incoming, but at some point we need to collectively draw a line in the sand.</p>



<p class="wp-block-paragraph">Here's <a href="https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/TLS_Cipher_String_Cheat_Sheet.md">a handy list of ciphers and compatibility</a> recommendations, and here's <a href="https://access.redhat.com/articles/1468593">a quick guide for RHEL OSes on how to quickly disable SSLv2 and SSLv3 support in Postfix</a>.</p>



<h2 class="wp-block-heading">Bonus Postfix config excerpts</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme data-enlighter-highlight data-enlighter-linenumbers data-enlighter-lineoffset data-enlighter-title data-enlighter-group>smtpd_tls_mandatory_exclude_ciphers = MD5, aDSS, kECDH, kDH, SEED, IDEA, DES, ADH, RC2, RC4, RC5, PSD, SRP, 3DES, eNULL, aNULL
smtp_tls_mandatory_exclude_ciphers = MD5, aDSS, kECDH, kDH, SEED, IDEA, DES, ADH, RC2, RC4, RC5, PSD, SRP, 3DES, eNULL, aNULL

smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
smtp_tls_exclude_ciphers = ${smtpd_tls_exclude_ciphers}

smtp_tls_protocols = !TLSv1, !SSLv2, !SSLv3
smtpd_tls_protocols = !TLSv1, !SSLv2,
# denying SSLv3 bars too many legit emails, so permitted for now.
smtp_tls_ciphers = high
smtpd_tls_ciphers = high
smtpd_tls_mandatory_protocols = !TLSv1, !SSLv2
smtp_tls_mandatory_protocols = !TLSv1, !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers = high
smtpd_tls_mandatory_ciphers = high

smtpd_tls_auth_only = yes
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128
-SHA:AES128-SHA</pre>



<p class="wp-block-paragraph">While not a complete config, hopefully it gives you some inspiration.</p>



<h3 class="wp-block-heading">Further reading: better encryption and Postfix hardening</h3>



<ul class="wp-block-list"><li><a href="https://access.redhat.com/articles/1468593">https://access.redhat.com/articles/1468593</a> (a worthy read)</li><li><a href="https://serverfault.com/a/836687/32054">https://serverfault.com/a/836687/32054</a></li><li><a href="https://ubuntuforums.org/showthread.php?t=1981839">https://ubuntuforums.org/showthread.php?t=1981839</a><ul><li>If you want to be ultra-strict, you'll have to bodge workarounds for some senders like GMail who still use weaker ciphers.</li></ul></li><li><a href="https://blog.kruyt.org/postfix-and-tls-encryption/">https://blog.kruyt.org/postfix-and-tls-encryption/</a></li><li><a href="https://bettercrypto.org/static/applied-crypto-hardening.pdf">https://bettercrypto.org/static/applied-crypto-hardening.pdf</a></li><li><a href="http://www.postfix.org/postconf.5.html#reject_non_fqdn_helo_hostname">http://www.postfix.org/postconf.5.html#reject_non_fqdn_helo_hostname</a></li><li><a href="https://www.linuxquestions.org/questions/linux-server-73/how-to-reject-addresses-by-tld-in-postfix-678757/">https://www.linuxquestions.org/questions/linux-server-73/how-to-reject-addresses-by-tld-in-postfix-678757/</a> </li><li><a href="https://www.howtoforge.com/virtual_postfix_antispam">https://www.howtoforge.com/virtual_postfix_antispam</a></li><li><a href="https://unix.stackexchange.com/questions/91749/helo-command-rejected-need-fully-qualified-hostname-error">https://unix.stackexchange.com/questions/91749/helo-command-rejected-need-fully-qualified-hostname-error</a> </li></ul>



<p class="wp-block-paragraph">Any thoughts / want to agree or disagree with anything I've said? Tweet or comment below, insight from others is always a good learning opportunity.</p>
<div class="speaker-mute footnotes_reference_container"> <div class="footnote_container_prepare"><p><span role="button" tabindex="0" class="footnote_reference_container_label pointer" onclick="footnote_expand_collapse_reference_container_696_19();">References</span><span role="button" tabindex="0" class="footnote_reference_container_collapse_button" style="display: none;" onclick="footnote_expand_collapse_reference_container_696_19();">[<a id="footnote_reference_container_collapse_button_696_19">+</a>]</span></p></div> <div id="footnote_references_container_696_19" style><table class="footnotes_table footnote-reference-container"><caption class="accessibility">References</caption> <tbody> 

<tr class="footnotes_plugin_reference_row"> <th scope="row" class="footnote_plugin_index_combi pointer" onclick="footnote_moveToAnchor_696_19('footnote_plugin_tooltip_696_19_1');"><a id="footnote_plugin_reference_696_19_1" class="footnote_backlink"><span class="footnote_index_arrow">↑</span>1</a></th> <td class="footnote_plugin_text">I typically filter 'unknown' connections as they're usually connecting clients. If you want to include those, remove the piped section where I <code>grep -v</code> (inverting a match). For the full output, only run the first command in the chain.</td></tr>

 </tbody> </table> </div></div><script type="text/javascript"> function footnote_expand_reference_container_696_19() { jQuery('#footnote_references_container_696_19').show(); jQuery('#footnote_reference_container_collapse_button_696_19').text('−'); } function footnote_collapse_reference_container_696_19() { jQuery('#footnote_references_container_696_19').hide(); jQuery('#footnote_reference_container_collapse_button_696_19').text('+'); } function footnote_expand_collapse_reference_container_696_19() { if (jQuery('#footnote_references_container_696_19').is(':hidden')) { footnote_expand_reference_container_696_19(); } else { footnote_collapse_reference_container_696_19(); } } function footnote_moveToReference_696_19(p_str_TargetID) { footnote_expand_reference_container_696_19(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_696_19(p_str_TargetID) { footnote_expand_reference_container_696_19(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }</script><p>The post <a href="https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/">Dear mailserver operators: PLEASE stop using SSLv3!</a> appeared first on <a href="https://chriswoods.co.uk">The Broom Cupboard</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chriswoods.co.uk/2019/06/mailserver-operators-stop-using-sslv3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced (Page is feed) 

Served from: chriswoods.co.uk @ 2026-06-09 09:57:07 by W3 Total Cache
-->