# Choice Technology Solutions: Complete Site Content
> Full Markdown export of the indexable public website, including company pages and the CTS blog.
Content signal: search=yes, ai-input=yes, ai-train=no, use=reference.
## Page: Practical technology. Personal service.
Source: https://nmbgeek.com/
Summary: Owner-operated business IT consulting and support, serving Myrtle Beach and the Grand Strand from Little River, SC since 2010.


Business IT · Little River, South Carolina
# Practical technology. Personal service.
IT consulting and support for businesses in Myrtle Beach, Little River, and across the Grand Strand since 2010. Work directly with the owner, from your first call to the finished job.
[Get in touch](https://nmbgeek.com/contact/)
[See our IT services](https://nmbgeek.com/services/)
Consulting & support
## IT support for the systems your business relies on.
### Technology consulting
Get help deciding what to keep, what to replace, and where to spend your IT budget. We review your current systems and explain your options.
### Networks & managed Wi-Fi
Keep staff and customers connected with Wi-Fi planned around your building and devices. Guest access stays separate from your business network.
### Monitoring & security cameras
Monitor your business systems to help catch problems early. We also plan and install security cameras, with recording and access set up for your needs.
[All consulting & support services](https://nmbgeek.com/services/)
## Looking for a website or an application?
Choice Apps is the web and application development brand of Choice Technology Solutions, LLC.
Visit Choice Apps to see our projects and development services, or contact us here to discuss what you need.
[Visit Choice Apps →](https://choiceapps.us/)
From the CTS blog
## Troubleshooting notes from real jobs.
Browse guides to Windows, Microsoft 365, networking, Linux, and nginx. Each article includes its original date so you can judge whether it applies to your setup.
### First Helium Miner Deployment
Photos and notes from my first Helium hotspot installation in April 2022, including the outdoor enclosure, antenna, and power setup.
### Updating MS Office with Microsoft Endpoint Manager
What resolved an Office 2021 LTSC deployment stuck at “Install Pending” in Intune, and how the previous Office installation affected it.
### DJI Spark Gimbal Calibration
How I used DJI Firmware Tools to calibrate a Spark gimbal with a tilted horizon. Includes a 2022 note about changes to the commands.
[Browse the blog](https://nmbgeek.com/blog/)
## Work directly with Clint Johnson.
I started The NMB Geek in 2010 and renamed it Choice Technology Solutions, LLC in 2018. I still handle the consulting and support myself.
If we’ve worked together before, you can reach me at the same phone number.
[About Clint and CTS](https://nmbgeek.com/about/)
## Need help with your business IT?
Tell us what’s going wrong or what you’re planning. We’ll help you work out the next step.
[Get in touch](https://nmbgeek.com/contact/)
---
## Page: Helping local businesses with technology since 2010.
Source: https://nmbgeek.com/about/
Summary: The story of Clint Johnson and Choice Technology Solutions, from The NMB Geek in 2010 to CTS and its Choice Apps development brand.


Our story
# Helping local businesses with technology since 2010.
I’m Clint Johnson, owner of Choice Technology Solutions. Based in Little River, I provide IT consulting and support for businesses across the Grand Strand.
Meet the founder
## I’m Clint Johnson.
I founded The NMB Geek in 2010, helping people and businesses with computer repair, IT services, and websites. I learned how much it helps to listen first and explain the options in plain language.
My interest in technology began with a high-school internship at a local dial-up internet provider. I studied business at Horry-Georgetown Technical College and graduated from the Cisco Network Academy summa cum laude. My background includes Microsoft certifications and years of practical work with business systems.
Local businesses, nonprofit work, and community relationships have all shaped how I approach technology. If your existing equipment still does the job, I’ll tell you. When it needs replacing, I’ll explain why.
## Our milestones
1. **2010** ### The NMB Geek The business opens, offering computer repair, IT services, and website design.
2. **2018** ### Choice Technology Solutions, LLC A new name and company structure reflect the broader technology work. [Read the original announcement.](https://nmbgeek.com/blog/new-name-same-great-service/)
3. **Today** ### CTS + Choice Apps CTS focuses on business IT consulting and support. Choice Apps handles our web and application development.
## Web and application development through Choice Apps.
Choice Apps is the web and application development brand of Choice Technology Solutions, LLC.
You can contact me here about any of that work. To see past projects, [explore Choice Apps](https://choiceapps.us/).
## Let’s talk about what you need.
Call 843-997-4335 or send me a message. I’ll get back to you to discuss how I can help.
[Get in touch](https://nmbgeek.com/contact/)
---
## Page: Business IT services for Myrtle Beach and the Grand Strand.
Source: https://nmbgeek.com/services/
Summary: IT consulting, remote monitoring, network support, managed Wi-Fi, and security cameras for businesses in Myrtle Beach, Little River, and the Grand Strand.


Consulting & support
# Business IT services for Myrtle Beach and the Grand Strand.
From a slow network to a planned upgrade, we help you solve IT problems and choose the right equipment for your business.
## Technology consulting
Before you invest in new technology, get a clear view of your options. We review your current systems, costs, and day-to-day needs to help you decide what to keep and what to replace.
[Talk it through first →](https://nmbgeek.com/contact/)
## Remote monitoring & management
Monitor your business systems to help spot problems early and keep them running. We agree with you on which devices to cover, who has access, and the support you need.
[Ask what monitoring covers →](https://nmbgeek.com/contact/)
## Network optimization
Slow connections and dropped calls make everyday work harder. We check your network, find what’s causing the problem, and recommend the repairs or upgrades it needs.
[Get help with your network →](https://nmbgeek.com/contact/)
## Managed Wi-Fi
Get reliable Wi-Fi coverage for your building, staff, and customers. We plan access point placement around your space and devices, and keep guest traffic separate from your business network.
[Plan wireless coverage →](https://nmbgeek.com/contact/)
## Security cameras
See what’s happening at your business or property with a camera system planned for your space. Before installation, we agree on coverage, recording storage, and who can view the footage.
[Discuss camera coverage →](https://nmbgeek.com/contact/)
Websites & applications
## Development through Choice Apps
Need a website, custom application, or help connecting your software? Visit Choice Apps for our development services and portfolio, or get in touch here.
[Explore Choice Apps →](https://choiceapps.us/)
## Common questions
**Where is Choice Technology Solutions located?**
CTS works out of 11476 Highway 90, Little River, SC 29566. The office is by appointment only, and most work happens on site at your business or remotely.
**What areas do you serve?**
Little River, North Myrtle Beach, Myrtle Beach, Conway, Surfside Beach, Murrells Inlet and the surrounding Grand Strand. Remote support is also available outside the area.
**What are your hours?**
9:00 AM to 5:00 PM, Monday through Friday. Office visits are by appointment.
**Do you build websites and applications?**
Yes, through Choice Apps, the development brand of Choice Technology Solutions, LLC. Contact us here or visit choiceapps.us to see our development services and past projects.
**I worked with The NMB Geek years ago. Is this the same business?**
Yes. The business opened as The NMB Geek in 2010 and became Choice Technology Solutions, LLC in 2018. Same owner, same phone number.
## Let’s talk about your IT needs.
Tell us about a problem or an upcoming project. We’ll discuss your options and help you decide where to start.
[Get in touch](https://nmbgeek.com/contact/)
---
## Page: Get in touch with Clint.
Source: https://nmbgeek.com/contact/
Summary: Contact Choice Technology Solutions in Little River, SC for business IT support in the Myrtle Beach area. Call 843-997-4335 or send Clint a message.


Get in touch
# Get in touch with Clint.
Need IT support or have a project in mind? Send me a message below or [call 843-997-4335](tel:+18439974335).
## What we can help with
We help Grand Strand businesses with IT consulting, remote monitoring, networks, Wi-Fi, and security cameras.
You can also ask about websites and applications. See our development work at [Choice Apps](https://choiceapps.us/).
Tell us a little about your business and what you’d like help with.
**Clint Johnson** Choice Technology Solutions, LLC By appointment only · 9:00 AM to 5:00 PM, Monday through Friday
11476 Highway 90, Little River, SC 29566[support@nmbgeek.com](mailto:support@nmbgeek.com)
[843-997-4335](tel:+18439974335)
---
## Page: IT troubleshooting guides and tips.
Source: https://nmbgeek.com/blog/
Summary: Troubleshooting guides and fixes for Windows, Microsoft 365, Wi-Fi and networking, Linux, RunCloud and nginx, and PowerShell scripting from Choice Technology Solutions.
CTS blog
# IT troubleshooting guides and tips.
Notes from hands-on work with business systems, software, and networks. These articles keep their original publication dates; older instructions may need adapting.
[All articles](https://nmbgeek.com/blog/)
[Subscribe with RSS](https://nmbgeek.com/feed/)
Page 1 of 4 · 19 articles
April 9, 2022
## First Helium Miner Deployment
Photos and notes from my first Helium hotspot installation in April 2022, including the outdoor enclosure, antenna, and power setup.
February 1, 2022
## Updating MS Office with Microsoft Endpoint Manager
What resolved an Office 2021 LTSC deployment stuck at “Install Pending” in Intune, and how the previous Office installation affected it.
January 6, 2020
## DJI Spark Gimbal Calibration
How I used DJI Firmware Tools to calibrate a Spark gimbal with a tilted horizon. Includes a 2022 note about changes to the commands.
December 4, 2019
## Serve Webp Images and Create an Efficient Cache Policy for Runcloud’s nginx-rc
An nginx configuration for serving WebP images and setting cache headers in RunCloud, with steps for checking the response headers.
October 3, 2019
## Updated: $100 Credit for DigitalOcean VPS Hosting and Cloud Services
An archived DigitalOcean referral offer and notes on using its cloud servers for web hosting. The credit and offer terms may have changed.
[Page 1](https://nmbgeek.com/blog/)
[Page 2](https://nmbgeek.com/blog/page/2/)
[Page 3](https://nmbgeek.com/blog/page/3/)
[Page 4](https://nmbgeek.com/blog/page/4/)
[Older articles →](https://nmbgeek.com/blog/page/2/)
## Browse by topic
### Categories
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
### Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[caching](https://nmbgeek.com/blog/tag/caching/)
[developers](https://nmbgeek.com/blog/tag/developers/)
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
[route53](https://nmbgeek.com/blog/tag/route53/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: Website privacy
Source: https://nmbgeek.com/privacy/
Summary: How the CTS website handles direct inquiries, archived public comments, and links to other websites.
Privacy
# Website privacy
## Contacting CTS
When you contact Choice Technology Solutions, LLC by form, email, or telephone, we use the information you share to respond and discuss your request. The contact form asks for your name, email, message, and optional phone number and organization.
## Contact form processing
CTS and Choice Apps use a shared inquiry system operated for Choice Technology Solutions, LLC. Form details are processed by that system and may be retained in its private contact records or delivered through email and access-restricted internal notifications, including Amazon SES and Discord where configured. Please do not include passwords or sensitive account information.
The form uses Cloudflare Turnstile to reduce automated abuse. Cloudflare processes request and browser information for this security check. Submitting an inquiry does not subscribe you to a newsletter.
## Website activity
This website does not include an analytics tracker or advertising cookies. Your theme preference is stored locally in your browser. The hosting provider may process routine request information to deliver and protect the website.
## The blog and public comments
The CTS blog preserves published articles and approved public comments. Public commenter names, dates, and comment text remain visible; commenter email addresses, IP addresses, and administrative records are not published. New comments are closed.
## Other websites and embedded media
Links to Choice Apps and other websites take you to services with their own privacy practices. Historical articles may include third-party media; loading that media can make a request to its provider.
## Questions
Email [support@nmbgeek.com](mailto:support@nmbgeek.com) with questions about this website or an archived public comment.
---
## Page: Using this website.
Source: https://nmbgeek.com/accessibility/
Summary: Accessibility commitment and contact information for the Choice Technology Solutions website.


Accessibility
# Using this website.
Choice Technology Solutions, LLC aims to make this website easy to read and use on phones and computers. We support keyboard navigation, visible focus indicators, clear links, and reduced motion settings.
## Archived content
Historical blog posts were migrated from an older website. Their original media and formatting may not meet the same standard as the new site. We keep these articles available for reference and work to fix accessibility problems when we find them.
## Report a problem
If something prevents you from using the site, contact [support@nmbgeek.com](mailto:support@nmbgeek.com) or call [843-997-4335](tel:+18439974335). Include the page and the task you were trying to complete.
---
## Page: Be In Control Of Your WiFi
Source: https://nmbgeek.com/blog/be-in-control-of-your-wifi/
Summary: Manage Wi-Fi with Ubiquiti UniFi: see connected devices, identify coverage gaps, reduce interference, and connect multiple locations.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Be In Control Of Your WiFi
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
January 23, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.


**Are you in control of your WiFi?** Can you see who is connected? Do you know what areas lack proper coverage? Are you minimizing and countering interference? Did you ever imagine you could create a wireless network to your satellite locations at distances of over 10 miles with full gigabit and higher connection speeds?

## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
---
## Page: Scripts articles
Source: https://nmbgeek.com/blog/category/scripts/
Summary: Browse Scripts articles on the CTS blog.
CTS blog
# Scripts articles
Notes from hands-on work with business systems, software, and networks. These articles keep their original publication dates; older instructions may need adapting.
[All articles](https://nmbgeek.com/blog/)
[Subscribe with RSS](https://nmbgeek.com/feed/)
Page 1 of 1 · 3 articles
July 29, 2019
## G-Suite to Office 365 Migration – No Contact Folder Permissions Solution
How I restored access to Outlook Contacts folders after a G-Suite to Office 365 migration, with a 2022 update on the script download.
March 3, 2019
## Remove Atera Agent and Splashtop Streamer with PowerShell
A PowerShell script I used to remove Atera Agent and Splashtop Streamer after taking over IT support for an office.
January 6, 2019
## Dynamic DNS Updating with Route 53 & Linux
A Bash script and cron job for updating an Amazon Route 53 DNS record when your home IP address changes, based on my Ubuntu setup.
[Page 1](https://nmbgeek.com/blog/category/scripts/)
## Browse by topic
### Categories
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
### Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[caching](https://nmbgeek.com/blog/tag/caching/)
[developers](https://nmbgeek.com/blog/tag/developers/)
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
[route53](https://nmbgeek.com/blog/tag/route53/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: DJI Spark Gimbal Calibration
Source: https://nmbgeek.com/blog/dji-spark-tilted-horizon-gimbal-calibration-fix/
Summary: Fix a tilted or drifting DJI Spark horizon by running GimbalCalib JointCoarse and LinearHall from the DJI Firmware Tools over USB on Windows.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# DJI Spark Gimbal Calibration
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
January 6, 2020
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

**UPDATE 01/19/2022:** I no longer have a DJI Spark but it looks like they have changed the commands for the DJI serial tools. My Air2 is working great so I haven’t had to use this yet but specifying –port before your COM port and -vv before your model will likely give the desired results.
First, special thanks to Brian Stigall and his [video on YouTube](https://www.youtube.com/watch?v=xnR2or65ZuQ) showing how to do this. I figured it would be helpful to make the commands used easily accessible and to be copied and pasted.
## Disclaimer
Just an obligatory disclaimer that I am not responsible for any damages that may result to your equipment including PC, drone, or other devices that could be affected by these scripts. Please understand what you are doing and how these tools work before just running commands on your PC and/or your drone. This worked well for my DJI Spark and it should work for other drones that do not have Gimbal Calibration in their Go Fly App. Documentation related to the DJI Firmware Tools can be found on the github page here:[https://github.com/o-gs/dji-firmware-tools/blob/master/README.md](https://github.com/o-gs/dji-firmware-tools/blob/master/README.md)
### My Story
If you find yourself with a tilted or drifting horizon or basically a gimbal that just won’t stay level this will be your fix. Below you will read what happened to me and the steps that were able to successfully fix the problem.
I recently lost a propeller (aftermarket set) about 3 seconds after take off and my Spark took off at an angle and lodged straight in a tree. I recovered my bird and upon inspection 2 of my other propellers had damage but otherwise appeared fine so I went to Amazon and ordered some **Genuine** DJI Spark Propellers. You can get them from Amazon [by clicking here.](https://www.amazon.com/gp/product/B073JRWYKK/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B073JRWYKK&linkCode=as2&tag=choicetechnmb-20&linkId=7808b03b8bca52f766d4775492eaf2fc). My current propellers at the time were an aftermarket set along with some aftermarket spares. I have seen other people have a lot of luck with aftermarket propellers, but it is no longer worth it to me to risk an expensive drone by saving $5 on propellers.
A few days later I received the new genuine propellers, installed them, and while I was doing my pre-flight checks I noticed that my camera wasn’t level. I adjusted the gimbal roll for my first time ever and it appeared level. After take off everything was still level however I quickly noticed after getting to my desired location to record some footage that my gimbal was out of level again. I adjusted it again and soon learned that after any yaw or roll movements that my gimbal was not going back to level and during extended roll movements I could watch the tilt grow more and more! I landed my Spark and returned to my place where I could do a good IMU calibration and compass calibration as those were some suggestions I found in my initial search. I then did some motions with the Spark in my hand and found the issue was still happening. I hunted the Go Fly App for the ability to do the gimbal calibration which some other model DJI Drones appear to have, but had no luck finding it with the Spark. I posted to Reddit asking for suggestions and was directed to the video by Brian [linked to at the beginning of this post](https://www.youtube.com/watch?v=xnR2or65ZuQ).
#### My Tilted Horizon

Needless to say it worked and wanted to give back and document in writing for those that like to follow written directions. Below you will find the procedure to calibrate the gimbal for a DJI Spark and likely other DJI drones that do not have the option in the DJI App. I don’t wish this problem on anyone, but if you happen to find yourself with it hopefully this will help. The DJI Firmware Tools are written in Python which is a high level programming language and can be used on any major operating system such as Windows, Linux, or even Mac. The instructions below are for Windows but they can easily be adopted for other operating systems.
#### After The Fix

### What is needed:
- DJI Drone (Spark is used in this example)
- PC (Windows 10, Mac, or Linux)
- Micro USB Cable
- Python 3.7.0: [https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe](https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe) (Windows Version)
- DJI Firmware Tools: [https://github.com/o-gs/dji-firmware-tools/archive/master.zip](https://github.com/o-gs/dji-firmware-tools/archive/master.zip)
- pyserial: Download pyserial-3.4.tar.gz from [https://pypi.org/project/pyserial/#files](https://pypi.org/project/pyserial/#files)
- 7zip: [https://www.7-zip.org/a/7z1900.exe](https://www.7-zip.org/a/7z1900.exe) (Any archive tool capable of opening.tar.gz files will work)
- A level surface for calibration
### Download and Install Python
Download the Python 3.7.0 installation linked above. Any version of Python 3 should work, but 3.7.0 is documented and linked to for this tutorial. I chose to install Python with a ‘Custom Installation’ to **C:\DJI\python\** and **Add Python to environment variables** which allows it be ran by just typing ‘python’ in the command line. Python is easy to run because you just type ‘python’ however I used a short path **C:\DJI**for all of these extractions so that it is easy to navigate to from the command line which we will be doing shortly.
### Download & Extract pyserial
The pyserial archive is a.tar.gz file. This is a tarball archive (.tar extension) with GNU Zip (.gz extension) which is basically a different type of zip archive that Windows does not natively support. Because of this you will need to use 7zip, which is linked above, or another compatible utility to extract the pyserial files. After installing 7zip or another compatible tool just open the pyserial-3.4.tar.gz file. Because of the way.tar.gz files are archived you will go through a few folder levels before you get to the actual needed content folder. I extracted the meat and potatoes of pyserial to **C:\DJI\pyserial**
### Download & Extract DJI Firmware Tools
I extracted the DJI Firmware Tools folder dji-firmware-tools-master contents using 7zip to **C:\DJI\firmware-tools** _Make sure you review the README.md file to understand what these tools do and how they operate!_
### Connect your DJI Spark and Find the COM Port
Place your Spark on a level surface, power it on, and connect via a Micro USB cable to the port beside of your SD Card slot. There is no need to connect the controller.
To find the COM port your USB connection is using press the Win+X keys (_The ‘Win’ key or Windows Key is usually between Ctrl and Alt on the left side of your keyboard with the Windows logo on it_) to open the Power Users menu and select **Device Manager**. Expand the **Ports (COM & LPT)**section and you should see **USB Serial Device (COM#)**. If there are multiple devices you can disconnect and reconnect the Spark to see which device disappears and reappears. Note the COM port number because you will need it later. You can now close the Device Manager.
[](https://nmbgeek.com/wp-content/uploads/device-manager-com-port-spark.png)
### Install pyserial
Now we need to open an Administrator Command Prompt or PowerShell Session. Press Win+X keys to open the Power Users menu and select Command Prompt (Admin) or Windows PowerShell (Admin) and accept the User Account Control warning about making changes to your device.
Once you are in Command Prompt or PowerShell we need to navigate to the pyserial folder we just extracted and install pyserial. to do this use these commands. If you extracted to a different folder you will need to substitute that folder in the commands below.
```
cd c:\DJI\pyserial
python setup.py install
```
### Calibrate the Gimbal
Now for the moment of truth! We need to navigate to the DJI Firmware Tools folder and execute the commands to get our gimbal recalibrated. Staying in the Administrator Command Prompt or PowerShell session we will now run the following commands to calibrate. The –port specification is new and I have not tested this syntax but it should work.
```
cd c:\DJI\firmware-tools
python comm_og_service_tool.py --port com3 -vv SPARK GimbalCalib JointCoarse
python comm_og_service_tool.py --port com3 -vv SPARK GimbalCalib LinearHall
```
During each of the the comm_og_service_tool.py commands your gimbal will bounce around and then hopefully finish with a Summary ending in “result: Pass”.
### Test & Fly
Hopefully your calibration was successful. Disconnect the Micro USB and connect your remote along with your phone or tablet. Your picture should now be level. I attempted some motions with the drone in my hand and everything looked good. Next I preformed my pre-flight check and took it up for a quick test flight to verify everything was working as it should and let out a big sigh of relief.
Special thanks again to Brian Stigall and the kind folks on Reddit who pointed me in the right direction.
[View more DJI Batteries on Amazon](https://amzn.to/3xnHwRq)
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
## Archived comments (44)
These historical comments are shown as they appeared publicly on the original site. New replies are closed.
1. **Gints Rijkuris** · March 19, 2020 Hi it will woking wit mavic zoom
2. **Clint Johnson** · March 19, 2020 Probably, but no guarantees.
3. **Kevin H** · March 20, 2020 Do you think this will work for a phantom with a yaw motor swap or gimbal esc swap? The Phantom series usually require you to swap out the casing but if you have to switch the esc board (which is calibrated to the magnets in that yaw motor) it won’t work as only DJI can calibrate the gimbal with the new motor or esc (they have a utility that they will not share since it’s has proprietary information in it). I currently have a P4 that keeps showing an overload and I think the esc may be the culprit and the calibration option available does not seem to fix the problem I am trying to prevent replacing the entire gimbal.
4. **Clint Johnson** · March 20, 2020 Hi Kevin, Unfortunately I don’t see anything in the readme file for the DJI Firmware Tools which can be found here: [https://github.com/o-gs/dji-firmware-tools/blob/master/README.md](https://github.com/o-gs/dji-firmware-tools/blob/master/README.md) If you have any luck please come back and share your solution.
5. **Enrique Mendez** · April 10, 2020 Hello kevin, thank you for your explanation. I could do it with my mac with some changes. I used “terminal” for execute the command “python3 setup.py install” to install the pyserial. In the other hand i type in terminal “ls /dev/tty.*” to establish de name that mac used to my spark. Then the command i used in the folder “dji-firmware-tools-master” was “./comm_og_service_tool.py /dev/tty.usbmodem2415 -vv SPARK GimbalCalib JointCoarse”. You will have to change the “usbmodem2415” part for your own spark identification. The second command is “./comm_og_service_tool.py /dev/tty.usbmodem2415 -vv SPARK GimbalCalib LinearHall”. Remember to change the “usbmodem2415” for your own. I hope this will helpful.
6. **Rob** · June 11, 2021 Bless you!!!!!
7. **Peter Horvath** · May 7, 2020 Hello. Please help, I have a Mac osx system! How does calibration work on a Mac? Can you give me a link to that? thank you very much
8. **Clint Johnson** · June 2, 2020 Enrique gave these instructions in another comment: > Hello kevin, thank you for your explanation. > I could do it with my mac with some changes. > I used “terminal” for execute the command “python3 setup.py install” to install the pyserial. > In the other hand i type in terminal “ls /dev/tty.*” to establish de name that mac used to my spark. > Then the command i used in the folder “dji-firmware-tools-master” was “./comm_og_service_tool.py /dev/tty.usbmodem2415 -vv SPARK GimbalCalib JointCoarse”. You will have to change the “usbmodem2415” part for your own spark identification. > The second command is “./comm_og_service_tool.py /dev/tty.usbmodem2415 -vv SPARK GimbalCalib LinearHall”. Remember to change the “usbmodem2415” for your own. > I hope this will helpful.
9. **Clint Johnson** · July 2, 2020 Hey Peter, Instead of the Windows version of Python you would use the Mac version. A full guide for installing Python 3 is here: [https://docs.python-guide.org/starting/install3/osx/](https://docs.python-guide.org/starting/install3/osx/) Once you have Python 3 you just replace the Windows paths I have with the correct paths for where you extract the files on your Mac. The DJI tools work through Python so once you have Python operating you can use the DJI tools.
10. **Ricky** · June 2, 2020 I did with my Spark Calibration and system show:” Calibration time exceeded; calibration must have ended. Summary: took 22.6 sec; received 233 reports; result:UNSURE”
11. **Clint Johnson** · June 2, 2020 Did you try multiple attempts at calibration?
12. **Ricky** · June 2, 2020 Yes, 3-4 times and result same
13. **Clint Johnson** · June 2, 2020 It sounds like you have some mechanical problems within the gimbal and may require repair or replacement.
14. **Stuart greenham** · September 26, 2020 What do we replace the “SPARK” with in the command when using it with the mavic pro? Thanks
15. **Eduardo Gonzalez** · September 6, 2020 MAVIC PRO: WM220 MAVIC 2: WM240 MAVIC 2 ENTERPRISE: WM245 MAVIC 2 ENTERPRISE DUAL: WM246 MAVIC MINI: WM160 MAVIC AIR: WM230 MAVIC AIR 2: WM231 MATRICE 100: MAT100 MATRICE 200: MAT200 MATRICE 600: MAT600 INSPIRE 1: WM610 INSPIRE 2: WM620 AGRAS MG-1: MG1 AGRAS MG-1S: MG1S SPARK: WM100 OSMO X3: WM610_FC350* OSMO X5: WM610_FC550
16. **Manoj** · October 5, 2020 Hello I have issue with mavic 2 pro Gimbal motor overloaded
17. **Clint Johnson** · October 7, 2020 Sorry, I don’t have a 2 Pro and I’m not familiar with troubleshooting. May I suggest trying [reddit.com/r/DJI](https://reddit.com/r/DJI)
18. **Alper** · November 3, 2020 Mavic mini does not appear as a USB Serial Port. What could be the reason for this? When I connect the Mavic mini via USB it shows up as WM160 Disk drive. How can I overcome this problem? If I overcome this problem, I will have a chance to try Gimbal Calibration. Thank you.
19. **Clint Johnson** · November 14, 2020 Does it appear like this with the MicroSD removed?
20. **Bierk** · December 17, 2020 Same here. Already removed the SD-Card, tried different cables and PCs/Macs.
21. **Clint Johnson** · December 17, 2020 > The mini has a serial mode that has to be manually enabled on each boot. If you plug the mini to your computer and wait a few seconds, it will present itself to the pc as a mass storage drive. Serial mode can be enabled before this mass storage mode is enabled. This can be easily done by sending the GetVersion command with comm_og_service_tool.py – [https://github.com/444A49/minifindings](https://github.com/444A49/minifindings) It looks like you will have to try what is suggested here to get it to go into serial mode. Looks like it would be easier to do on Linux though.
22. **Matt** · February 11, 2021 Hi Alper, I have solved this issue by installing DJI assistant 2 for Mavic. This software will install the correct drivers and will allow the Mini to be in Serial COM mode. Important: in order for the DJI FIRMWARE TOOLS to be able to communicate with your drone, you will need to quit DJI Assistant after the drone has been successfully connected. In the command Prompt I have used WM160 to call the drone.
23. **Jeremiah** · March 3, 2021 Thank you very much for sharing this information. With a few filename tweaks it worked perfectly.
24. **Chris** · March 10, 2021 FIXED! Thank you you saved my drone
25. **Deivid** · March 15, 2021 Any body help with dji mini 2 Code?
26. **Mac** · April 13, 2021 Hey so i replaced my dji spark camera gimbal and now im getting an overloaded message please help!
27. **Clint Johnson** · April 13, 2021 Hi Mac, I upgraded to the Mavic Air 2 and have not attempted a gimbal replacement. Beyond checking for binding that is limiting gimbal movement and using air duster to make sure nothing is wedged inside of the mechanism I don’t have much for suggestions. Wish I could be of more assistance! Clint
28. **Ale** · July 9, 2021 Hi Clin, I tried but i have this answer C:\DJI\dji-firmware-tools-master>python comm_og_service_tool.py com3 WM160 GimbalCalib JointCoarse Info: The Gimbal will move through its boundary positions, then it will fine-tune its central position. It will take around 15 seconds. Error: Unrecognized response to calibration command JointCoarse request. C:\DJI\dji-firmware-tools-master>python comm_og_service_tool.py com3 WM160 GimbalCalib LinearHall Info: The Gimbal will slowly move through all positions in all axes, several times. It will take around 30 seconds. Error: Unrecognized response to calibration command LinearHall request. Please can you help me? thanks
29. **Clint Johnson** · November 29, 2021 Sorry, I missed this comment when it was originally posted. Unfortunately I no longer have the Spark and have upgraded to an Air 2. From what I can tell the response from the drone to the software was not what was expected. This could be due to a problem in the drone itself or possibly a damaged USB cable. I would also make sure you are using the most recent version of the DJI Firmware tools and the most recent DJI Firmware for the Spark.
30. **Jesse** · December 2, 2021 Please Help!! I have a mini 2 which I replaced the gimbal after a crash and I can not get this to work! I have watched several youtube videos and tried for several days but I keep getting stuck around the same step. When I connect my mini 2 it does appear in ports (COM & LPT) for a few seconds then it disappears. The only way I am able to get it to show up is if I open DJI Assistant 2 and once it shows up on there I close the program and my mini 2 appears as COM8. Everything works exactly as it is suppose to following these step except once I past the command to calibrate gimbal, ¨python comm_og_service_tool.py com8 WM160 GimbalCalib JointCoarse ¨ I get this message… Finished processing dependencies for pyserial==3.5 c:\DJI\pyserial>cd c:\DJI\firmware-tools c:\DJI\firmware-tools>py comm_og_service_tool.py com8 WM160 GimbalCalib JointCoarse usage: comm_og_service_tool.py [-h] (–port PORT | –bulk) [-b BAUDRATE] [-w TIMEOUT] [–dry-test] [-v] [–version] product command … comm_og_service_tool.py: error: argument product: invalid choice: ‘COM8’ (choose from ‘A2’, ‘P330’, ‘P330V’, ‘P330Z’, ‘P330VP’, ‘WM610’, ‘P3X’, ‘P3S’, ‘MAT100’, ‘P3C’, ‘MG1’, ‘WM325’, ‘WM330’, ‘MAT600’, ‘WM220’, ‘WM620’, ‘WM331’, ‘MAT200’, ‘MG1S’, ‘WM332’, ‘WM100’, ‘WM230’, ‘WM335’, ‘WM240’, ‘WM245’, ‘WM246’, ‘WM160’, ‘WM231’, ‘WM232’, ‘WM260’) c:\DJI\firmware-tools> Any insight anyone is able to provide I would GREATLY appreciate it.
31. **Clint Johnson** · January 19, 2022 Try this where comX is your port: ` comm_og_service_tool.py --port comX SPARK GimbalCalib JointCoarse` ` comm_og_service_tool.py --port comX SPARK GimbalCalib LinearHall `
32. **Jose** · December 5, 2021 Hello. Thank you very much for the tutorial, but I have a problem. When I run python comm_og_service_tool.py com3 wm100 GimbalCalib JointCoarse I get the error that –port PORT or –BULK is required. Can you help me? Thanks
33. **Clint Johnson** · January 19, 2022 Sorry for the long delay. This was sitting in junk comments. Try this where comX is your com port: ` comm_og_service_tool.py --port comX SPARK GimbalCalib JointCoarse` ` comm_og_service_tool.py --port comX SPARK GimbalCalib LinearHall `
34. **nicolas** · February 3, 2022 yesssss you are a crack bro this is de code!!!
35. **George** · January 19, 2022 Alguna solución a esta respuesta del CMD? usage: comm_og_service_tool.py [-h] (–port PORT | –bulk) [-b BAUDRATE] [-w TIMEOUT] [–dry-test] [-v] [–version] product command … comm_og_service_tool.py: error: argument product: invalid choice: ‘COM3’ (choose from ‘A2’, ‘P330’, ‘P330V’, ‘P330Z’, ‘P330VP’, ‘WM610’, ‘P3X’, ‘P3S’, ‘MAT100’, ‘P3C’, ‘MG1’, ‘WM325’, ‘WM330’, ‘MAT600’, ‘WM220’, ‘WM620’, ‘WM331’, ‘MAT200’, ‘MG1S’, ‘WM332’, ‘WM100’, ‘WM230’, ‘WM335’, ‘WM240’, ‘WM245’, ‘WM246’, ‘WM160’, ‘WM231’, ‘WM232’, ‘WM260’)
36. **Clint Johnson** · January 19, 2022 Try this: ` comm_og_service_tool.py --port com3 -vv SPARK GimbalCalib JointCoarse` ` comm_og_service_tool.py --port com3 -vv SPARK GimbalCalib LinearHall `
37. **Clint Johnson** · January 19, 2022 See my edited response and updated post. Apparently they now require you to specify the –port COMX and –vv SPARK. I don’t have a Spark anymore and my other DJI drones are working great so I have no way to test the command syntax.
38. **DJ** · October 6, 2022 I couldn’t use “SPARK” as the device name, changed it to “WM100” and all good.
39. **Risiaah** · January 16, 2023 HI can you help, I have replace gimbal, have done all the Python and pyserial when now in dos, cd\dji and then run the JoinCoarse command Line, the gimbal goes through the motions, For calibration, but when the LinearHall command is run I have no response at all. Can anyone help.
40. **Clint Johnson** · January 17, 2023 Are you receiving any errors on the command line at all?
41. **Andrew L** · July 30, 2023 Hello all, I replaced a new gimbal motor, when I powered up Spark, the gimbal will vibrate for few seconds. I got normal image on DJI go4. The gimbal is off balance. I try gimbal calibrate with./comm_og_service_tool.py, and is doing its thing but the gimbal doesn’t move at bit during the process. Any clue is greatly appreciated. ~ Andrew Below was the screen showing the calibration progress and results: Info: The Gimbal will move through its boundary positions, then it will fine-tune its central position. It will take around 15 seconds. Calibration process started; monitoring progress. Progress: received 32 reports. Progress: received 47 reports. Progress: received 62 reports. Progress: received 78 reports. Progress: received 93 reports. Progress: received 108 reports. Progress: received 123 reports. Progress: received 139 reports. Progress: received 154 reports. Progress: received 169 reports. Progress: received 184 reports. Progress: received 199 reports. Progress: received 215 reports. Calibration time exceeded; calibration must have ended. Summary: took 22.6 sec; received 230 reports; result: UNSURE. Andrews-MacBook-Air:dji-firmware-tools-master logiconsolutions$./comm_og_service_tool.py –port /dev/tty.usbmodem14205 WM100 GimbalCalib LinearHall Info: The Gimbal will slowly move through all positions in all axes, several times. It will take around 30 seconds. Calibration process started; monitoring progress. Progress: received 62 reports. Progress: received 93 reports. Progress: received 123 reports. Progress: received 154 reports. Progress: received 184 reports. Progress: received 215 reports. Progress: received 245 reports. Progress: received 276 reports. Progress: received 306 reports. Progress: received 337 reports. Progress: received 367 reports. Progress: received 398 reports. Progress: received 428 reports. Calibration time exceeded; calibration must have ended. Summary: took 45.1 sec; received 459 reports; result: UNSURE.
42. **Andrew L** · August 2, 2023 I got the same result. No respond on “LinearHall”
43. **mrmarvin** · March 4, 2026 I need help with my Air3s gimbal calibration 🙁
44. **Clint Johnson** · March 4, 2026 Hey mrmarvin, I don’t have the Spark anymore and do have the Air 3 myself, but I haven’t had any gimbal troubles yet so I am not sure what the best fix may be.
---
## Page: Dynamic DNS Updating with Route 53 & Linux
Source: https://nmbgeek.com/blog/dynamic-dns-updating-service-with-route-53-linux/
Summary: A bash script and cron job that keep an Amazon Route 53 A record pointed at your home IP on Ubuntu, using the AWS CLI and checkip.amazonaws.com.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Dynamic DNS Updating with Route 53 & Linux
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
January 6, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

## Why?
I recently decided to consolidate a physical box running Ubuntu 16.04 and Nextcloud to a VM. In the process I decided to do a fresh install of Ubuntu 18.04 so I am on the latest LTS release. Since I was doing that I also did a fresh install of Nextcloud and migrated data. For install I followed this [guide](https://www.c-rieger.de/nextcloud-installation-guide-ubuntu/) by riegercloud and after discovered he has a GitHub script to automate the process [here](https://github.com/riegercloud/install-nextcloud). Since this server is running out of my home which is on a residential ISP account I cannot get a Static IP address and have to use a dynamic update service. I had been using this [Route 53 Dynamic DNS update script from WillWarren.com](https://willwarren.com/2014/07/03/roll-dynamic-dns-service-using-amazon-route53/) and after upgrading I discovered that the script was no longer working. The fix was actually very simple. Apparently the _dig_ command in 18.04 requires the use of the _-4_ option otherwise it will return an IPv6 address if you have an IPv6 address. Updated: Now using Amazon AWS to get IP Another issue I discovered is that this script also relies on an _IPFILE_ to tell if your DNS needs to be updated. The issue with this would be if your IP was somehow changed on Route53 this script would never know and never update the IP. I initially corrected this by adding another _dig_ command. Because I use mobile devices to sync to my Nextcloud I have a static entry in my pfSense firewall’s DNS resolver which captures all DNS traffic using pfBlocker for filtering and pointing my hostname to the local IP address while on my local network. This caused my dig command to return the local address for my DNS hostname rather than the public IP address on Route53 servers. Why not use the same _aws cli_ to get the IP from Route53? BINGO and While the fix was simple I wasn’t a fan of how it did it’s logging. My modified version cleans it up and lets the _crontab_ log to a specified file there.
### Requirements:
#### Domain & Route53 DNS
First you need a domain name from your choice of provider and DNS through Amazon’s AWS Route53 service. If you do not have a domain this is fairly inexpensive at ~$12/year for Domain Registration from Amazon, $0.50/mo for Route53 DNS, and possibly a few extra pennies depending on the amount of traffic. To get started with Amazon Route53 you can visit here: [https://aws.amazon.com/route53/getting-started/](https://aws.amazon.com/route53/getting-started/) If your domain and DNS are configured elsewhere you can create a subdomain and point it to Route53 and create a Hosted Zone for that subdomain. Creating the record set now is not necessary as the script will create it the first time it runs.
#### Linux Server
This script is tested and working on Ubuntu 18.04. Other flavors of linux will require different commands for installing dependencies however the script should still work.
#### Configure AWS IAM User
First we need to create an IAM user, give permissions to update Route53 and get the security credentials for the AWSCLI.
1. Use this [Add IAM User Quicklink](https://console.aws.amazon.com/iam/home#/users$new?step=details) (or from your [IAM Users Page](https://console.aws.amazon.com/iam/home) select ‘Users’ in the left sidebar and then ‘Add User’ on the following page.)
2. Enter a ‘Username’, select ‘Programmatic Access’, and ‘Next: Permissions’
3. Choose ‘Create Group’ and enter a ‘Group Name’. For simplicity you can choose Filter Policies: Route53 and select ‘AmazonRoute53FullAccess’ (You cannot limit users to specific record sets however you can create Hosted Zones for SubDomains)
4. After creating your group select Next: Tags > Next: Review > Create User
5. Copy your Access Key ID and Secret Access Key to a secure location. We will need those for configuring the AWSCLI.
#### Install & Configure AWSCLI
The AWS CLI can be installed through repositories however the recommend method for getting the latest version is to use Python. **Install Python3**
```
sudo apt-get install python3
```
**Get PIP**
```
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py
```
**Confirm PIP Install**
```
pip --version
```
**Install AWSCLI with PIP**
```
pip install awscli
```
**To update in the future use the command**
```
pip install awscli --upgrade
```
**Configure AWSCLI with IAM Credentials**
```
aws configure
```
You will now be asked for the ‘AWS Access Key ID’, ‘AWS Secret Access Key’, ‘Default Region Name’, and ‘Default Output Format’. Enter the Access Key and Secret Access Key obtained in IAM User creation. Route53 does not require a region but your default region can be set now if desired. ‘Default Output Format’ can also be left blank. AWSCLI keeps it’s configuration in _~/.aws/config_ and _~/.aws/credentials_ files.
## Make The Script
Make directory where scripts will run and save log files. Here I am creating the directory _aws_ in my users home directory. We also make the script executable and open it for adding our script.
```
mkdir ~/aws
touch ~/aws/awsupdate.sh ~/aws/awsupdate.log
sudo chmod u+x ~/aws/awsupdate.sh
nano ~/aws/awsupdate.sh
```
Copy and paste this script
```
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ZONEID="YOURHOSTEDZONEID"
RECORDSET="YOURDOMAINTOUPDATE"
TTL=300
COMMENT="`date` Updated AWS CLI"
TYPE="A"
DNSIP="$(
aws route53 list-resource-record-sets \
--hosted-zone-id "$ZONEID" --start-record-name "$RECORDSET" \
--start-record-type "$TYPE" --max-items 1 \
--output json | jq -r \ '.ResourceRecordSets[].ResourceRecords[].Value'
)"
IP=`curl -s http://checkip.amazonaws.com/`
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
if ! valid_ip $IP ; then
echo `date`" Invalid IP address $IP Check dig command."
exit 1
fi
if [ "$IP" == "$DNSIP" ] ; then
echo `date`" IP is still $IP. Exiting"
exit 0
else
echo `date`" IP has changed from $DNSIP to $IP"
TMPFILE=$(mktemp /tmp/temporary-file.XXXXXXXX)
cat > ${TMPFILE} << EOF
{
"Comment":"$COMMENT",
"Changes":[
{
"Action":"UPSERT",
"ResourceRecordSet":{
"ResourceRecords":[
{
"Value":"$IP"
}
],
"Name":"$RECORDSET",
"Type":"$TYPE",
"TTL":$TTL
}
}
]
}
EOF
aws route53 change-resource-record-sets \
--hosted-zone-id $ZONEID \
--change-batch file://"$TMPFILE" \
--query '[ChangeInfo.Comment, ChangeInfo.Id, ChangeInfo.Status, ChangeInfo.SubmittedAt]' \
--output text
rm $TMPFILE
fi
```
You can test the script by running
```
~/aws/awsupdate.sh
```
### Setup Cron Job
This script will run at 20 minute intervals with the */20 * * * * and at startup with the @reboot sleep 60 &&. The sleep 60 allows time for networking services to be restarted which are of course necessary for this script to run successfully. I had initially tried to run the script as root however there was an issue with the AWS credentials. They can be manually specified if you with to place this in the root crontab. All output is logged to the specified location that we created at the beginning. For initial testing of the cron job you may with to specify an interval of every minute (* * * * *) and monitor the log file with the command:**_tail -n10 ~/aws/awsupdate.log_**
```
crontab -e
```
```
*/20 * * * * ~/aws/awsupdate.sh >> ~/aws/awsupdate.log 2>&1
@reboot sleep 60 && ~/aws/awsupdate.sh >> ~/aws/awsupdate.log 2>&1
```
I hope to make a demo of a similar script for the Windows AWSCLI client in the near future! If you have any suggestions, questions, or comments please drop a line below!
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
## Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[route53](https://nmbgeek.com/blog/tag/route53/)
## Archived comments (5)
These historical comments are shown as they appeared publicly on the original site. New replies are closed.
1. **Joshua Young** · June 1, 2019 Sweet script! Thank you very much! One minor correction: there’s a typo above (‘asw’ switched for ‘aws’ in the filename)… the line: touch ~/aws/aswupdate.sh ~/aws/awsupdate.log should be: touch ~/aws/awsupdate.sh ~/aws/awsupdate.log I used in on Ubuntu 19.04, I needed to install jq and comment out the path line as I had aws-cli installed in snap/bin/aws and had added it to my.bashrc entry.
2. **Clint Johnson** · June 1, 2019 Thanks Josh! I will get it fixed shortly.
3. **J Suisman** · October 23, 2019 Thanks for the script! It does exactly what I was looking for. I added a pushbullet notification that gets pushed when the IP address changes that contains the old IP and the new IP address. Before the last fi after “Clean up” section I added: # Send pushbullet curl -s –header ‘Access-Token: your_pushbullet_API_key_here’ \ –header ‘Content-Type: application/json’ \ –data-binary ‘{“body”:”‘”Old: $DNSIP\nNew: $IP”‘”,”title”:”IP Address changed”,”type”:”note”}’ \ –request POST \ [https://api.pushbullet.com/v2/pushes](https://api.pushbullet.com/v2/pushes) > /dev/null
4. **Mike P** · September 3, 2020 There are a couple of alternatives to dig which may give better results. Among other things, dig isn’t always installed by default, which may limit the portability of this. ipify.org has an API that returns your IP: “`IP=$(curl -s [https://api.ipify.org/](https://api.ipify.org/))“` AWS also has an API that is not rate-limited and is free: “`IP=$(curl -s [http://checkip.amazonaws.com/](http://checkip.amazonaws.com/))“` (granted curl may not be installed either, but I’ve run into way more systems without dig than without curl) I then made two more modifications: 1) because I use OpenDNS on my local network, and have customized settings, I need to update OpenDNS so my settings follow me. While they have an updater that runs on Windows, Mac, and Android, they do not have a linux version. And I don’t really recommend setting the updater on your Mobile device, unless you are on a paid plan, as the free plan only allows a single network, which means that your home would lose any protection you might be gaining by using OpenDNS in the first place. Enter this script, which helpfully knows my IP has changed. Enter OpenDNS’s “DNSoMatic” service, which can simultaniously update a wide variety of Dynamic DNS services. They have a simple API: “`curl “https://updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=$IP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG” –user:“` 2) taking inspiration from J Suisman, you can send a request to IFTTT in addition to pushbullet, so I can send notifications multiple places via email or SMS
5. **Clint Johnson** · September 4, 2020 Thank you for the input Mike! It is very appreciated. I will update my post with a reference to your comment for alternative methods.
---
## Page: First Helium Miner Deployment
Source: https://nmbgeek.com/blog/first-helium-miner-deployment/
Summary: Notes and photos from a first Helium HNT hotspot install: a SenseCAP miner in an outdoor enclosure with an 8dBi 915MHz antenna and PoE to USB-C.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# First Helium Miner Deployment
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
April 9, 2022
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

## A Little Late
I am unfortunately a little late to the Helium (HNT) mining party. I just completed my first deployment and have 4 more in the works. My first miner [Future Pine Dove](https://explorer.helium.com/hotspots/11iBHL4spUma9feh5nZi1UAKQYmMMVp7ccqo22MscXtxznGPQ88) sat in the window for about a month while awaiting its antenna and additional equipment. Today, 04/09/2022, I put up an external antenna and I am starting off with an 8dBi but may drop that to 5.8 depending on how it performs.
I moved the Sensecap from wifi to ethernet in this process and updated my port forwards but at this time the miner is showing as relayed in the explorer app but hotspotty.net and the Sensecap app both say it isn’t relayed. Relaying won’t matter either after the next network update.
### Parts used:
- [Enclosure I used](https://amzn.to/37C3G7N) but I will be using this [slightly larger enclosure](https://amzn.to/3JuBzEw) for future installs
- [Wall/roof universal antenna mount](https://amzn.to/3jqPIZ6)
- [8dBi 915MHz antenna](https://amzn.to/3JsVbsU) – This had good reviews and time will tell. I may also go down to 5.8dBi if my signal seems to be jumping anyone.
- [Texas PoE – PoE+ to USB-C Converter](https://amzn.to/3usKB0A) to supply both power and internet to the miner
- I used an existing PoE+ switch that is used for cameras but this [PoE+ adapter](https://amzn.to/37zkX1e) would also work. PoE would probably be sufficient but PoE+ is recommended just be sure of sufficient power.
Want to connect or have suggestions for this setup? Either comment below or [send a message](https://nmbgeek.com/contact/). All input, feedback, or other requests are welcome. I also have an additional 4 hotspots with tentative hosts but if you are in the Myrtle Beach, Little River, or Longs, SC area and interested in hosting please let me know.
#### Photos:
[](https://nmbgeek.com/wp-content/uploads/20220410_201930-rotated.jpg) [](https://nmbgeek.com/wp-content/uploads/20220409_150950-rotated.jpg) [](https://nmbgeek.com/wp-content/uploads/20220409_150941-rotated.jpg) [](https://nmbgeek.com/wp-content/uploads/20220409_150149-rotated.jpg) [](https://nmbgeek.com/wp-content/uploads/20220409_144553-rotated.jpg) [](https://nmbgeek.com/wp-content/uploads/20220409_144301-rotated.jpg)
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Updated: $100 Credit for DigitalOcean VPS Hosting and Cloud Services
Source: https://nmbgeek.com/blog/free-50-dollar-credit-for-digitalocean-vps-hosting-and-cloud-services/
Summary: An archived DigitalOcean referral offer and notes on VPS web hosting with AWS SES and S3. Promotional credit and terms may have changed.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Updated: $100 Credit for DigitalOcean VPS Hosting and Cloud Services
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
October 3, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.


_Get $100 Credit_
## Referral Code:
[https://m.do.co/c/55a86fb4b82a](https://m.do.co/c/55a86fb4b82a)
### My Experience
My experience with DigitalOcean has been great. I currently host 4 droplets (essentially VPS instances) with them and run a few other services through Amazon’s AWS such as SES, and S3 Storage along with CloudFlare. For hosting virtual servers the reliability, price point, and support is unbeatable. I hosted my web servers on Amazon for a period of time and charges would vary, performance for the same specifications seemed to be less than optimal, and the features were far more than I actually need.
5 Reasons to Try DigitalOcean from Forbes: [https://www.forbes.com/sites/janakirammsv/2015/09/10/five-reasons-why-developers-love-digitalocean/#9a485c344efb](https://www.forbes.com/sites/janakirammsv/2015/09/10/five-reasons-why-developers-love-digitalocean/#9a485c344efb)
In the spirit of full disclosure – if you stick with DigitalOcean after your trial and eventually spend $25 with them I will receive a $25 credit to my account.
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[developers](https://nmbgeek.com/blog/tag/developers/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
---
## Page: G-Suite to Office 365 Migration – No Contact Folder Permissions Solution
Source: https://nmbgeek.com/blog/g-suite-to-office-365-migration-no-contact-folder-permissions-solution/
Summary: Restore missing Outlook Contacts folder permissions after a G Suite to Office 365 migration by setting PR_EXTENDED_FOLDER_FLAGS with EWS or MFCMAPI.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# G-Suite to Office 365 Migration – No Contact Folder Permissions Solution
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
July 29, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

**Updated: 04/04/2022** – It appears the update folders Technet gallery link is no longer available. I was able to obtain a copy via Internet Archive and will post that along with a copy that I host.
I recently used Microsoft’s new G-Suite to Office 365 Migration method (_this was back in 2019_) to migrate a company from G-Suite to Office 365. Microsoft’s new method has a few benefits. Along with emails it also migrates user calendars and contacts to Exchange Online. This is great and and solves the need of paying a third party exorbitant amounts of money to handle a migration. I ran a test migration on a few accounts and it seemed to work well other than one small snag. In the Outlook desktop apps (both 2016 and 2019) users had no permissions for their primary Contacts folder. The contacts had migrated from Google but had no ability to edit them or create new ones. The Outlook Web App functioned correctly.
I tried resetting permissions with PowerShell but ended up with no success. I then opened a ticket with Microsoft and after some basic troubleshooting I was escalated. The next representative I spoke with had me do the same troubleshooting I had done prior to opening the ticket with Powershell. After a while on the phone I was finally escalated again. It took a few days before my ticket was picked back up however when I did I finally got a real resolution.
## The Fix (Method 1):
This resolution requires the [EWS API](https://www.microsoft.com/en-us/download/details.aspx?id=42951) to be installed, the Update Folders PS script found below in an accessible folder, and the Application Impersonation Role. This role can take an hour to propagate however it is usually much faster. **As always never run scripts without reviewing the code and understanding what they do! Additionally, Exchange Online Powershell is ever evolving and this information may be outdated at any time. I have updated the resources but have no way of guaranteeing the methods are still implemented by Microsoft. You may also try Method 2 to manually make changes and see if this will resolve your issues.**
EWS API: [https://www.microsoft.com/en-us/download/details.aspx?id=42951](https://www.microsoft.com/en-us/download/details.aspx?id=42951)
Update-Folders.ps1: [https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a](https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a) _No longer available_ **Update Folders Readme**Internet Archive: [https://web.archive.org/web/20200402200156/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a](https://web.archive.org/web/20200402200156/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a)
Hosted PDF Version: [https://nxc.nmbgeek.com/s/3S2FNRnk5oTSMtL](https://nxc.nmbgeek.com/s/3S2FNRnk5oTSMtL)
**Update-Folders.ps1 Download:**Internet Archive: [https://web.archive.org/web/20200501145217/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a/file/223631/2/Update-Folders.ps1](https://web.archive.org/web/20200501145217/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a/file/223631/2/Update-Folders.ps1)
Hosted Version: [https://nxc.nmbgeek.com/s/BCFEPHp3meTsPLg](https://nxc.nmbgeek.com/s/BCFEPHp3meTsPLg) – **USE AT YOUR OWN RISK. DISECT THE SCRIPT AND MAKE SURE YOU UNDERSTAND WHAT IT IS DOING.**
Make sure to change the YourAdminUsername to the account you wish to use to run the folder fix script.
**Assign the impersonation role with a Global Admin account.:**
```
Set-ExecutionPolicy RemoteSigned
$Cred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic -AllowRedirection
Import-PSSession $Session
New-ManagementRoleAssignment -name:impersonationAssignmentName -Role:ApplicationImpersonation -User:YourAdminUsername
Get-PSSession | Remove-PSSession
```
Wait for your permissions to be propagated. We removed the session previously because that session wouldn’t have the commands needed to impersonate the users and change the flag needed on their Contacts folder. In the meantime be sure to install the EWS API and download / move to a folder your Powershell Script linked above. Once ready we can then change the PowerShell prompt to the directory containing the Update-Folders.ps1 script we downloaded earlier.
```
$cred = Get-Credential
$b = [byte[]]@(01, 04, 00, 00, 16, 00)
Get-Mailbox -ResultSize Unlimited | forEach {.\Update-Folders.ps1 -mailbox $_.PrimarySMTPAddress -FolderPaths "WellKnownFolderName.Contacts" -AddFolderProperties @{"0x36DA0102" = $b} -credentials $Cred -EwsURL "https://outlook.office365.com/EWS/Exchange.asmx" -Impersonate}
```
This script will go through and change a flag on all mailbox Contact folders to allow the correct permissions. This can take a while to propagate but should work for everyone. The alternative method is to do it for each device’s Outlook profile and affected Mailbox.
### Method 2 – One by one using MFCMAPI
This is the much safer way but must be done on each account one by one. You can also attempt this to make sure the above script will resolve your issue.
Download the [MFCMAPI](https://github.com/stephenegriffin/mfcmapi/releases/tag/19.0.19115.01) version x86 or 64-bit corresponding with the installed version of Outlook. I am not 100% sure that they need to match up but this is how it was instructed to me. MFCMAPI: [https://github.com/stephenegriffin/mfcmapi/releases/tag/19.0.19115.01](https://github.com/stephenegriffin/mfcmapi/releases/tag/19.0.19115.01)
In MFCMAPI follow these instructions:
Make sure Outlook is completely closed and open MFCMAPI.
Select **Session** > **Logon**
Select the affected Outlook Profile and press OK.
Double click the affected mailbox.
If the selected mailbox is the Root Mailbox expand “**IPM_SUBTREE**” and select “**Contacts**“.
If it is not the root mailbox you will expand “**Top of Information Store**” and select “**Contacts**“.
In right pane find and double click: **PR_EXTENDED_FOLDER_FLAGS**
Store current value in a secure location for backup and replace the value with:
**010400801200070401000000**
Open Outlook
Good luck and if you need any help or find errors in this please leave a comment below!
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
## Tags
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
## Archived comments (4)
These historical comments are shown as they appeared publicly on the original site. New replies are closed.
1. **IT tech** · August 9, 2019 Looping over the mailboxes with Get-Mailbox and forEach, is REALLY slow. Generating a CSV of mailboxes and supplying the file path to the script seems to be much quicker (2-3 secs per mailbox as opposed to 15-20 secs) Get-Mailbox -ResultSize unlimited | select primarysmtpaddress | Export-Csv -Path mailboxes.csv -NoTypeInformation.\Update-Folders.ps1 -Mailbox.\mailboxes.csv -FolderPaths “WellKnownFolderName.Contacts” -AddFolderProperties @{“0x36DA0102” = $b} -credentials $Cred -EwsURL “https://outlook.office365.com/EWS/Exchange.asmx” -Impersonate
2. **Sebastian Loscher** · April 4, 2022 Hi, we ran into the exact same problem, but unfortunately the Update-Folders.ps1script is not available anymore in TechNet-Gallery. Do you know where I could get it from? Thanks Sebastian
3. **Clint Johnson** · April 4, 2022 Hi Sebatian, I just tried to find it in my personal Powershell folders and unfortunately wasn’t able to. I also tried Google and Internet Archive without much luck. You can see the page here: [https://web.archive.org/web/20200402200156/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a](https://web.archive.org/web/20200402200156/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a) but the download doesn’t appear to be archived. This should be it here: [https://web.archive.org/web/20200501145217/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a/file/223631/2/Update-Folders.ps1](https://web.archive.org/web/20200501145217/https://gallery.technet.microsoft.com/exchange/PowerShell-Update-mailbox-79fd411a/file/223631/2/Update-Folders.ps1) but I am getting an error on mobile. I can look more once I get moving for the day. Have you tried the second method to verify that it will fix the problem with 1 account using MFCMAPI? If so I would use this to open or update a ticket with Microsoft to possibly expedite getting to a tier of support that is able to help you.
4. **Clint Johnson** · April 4, 2022 Actually the link I commented above does work now that I am not on mobile. I will update the post with a copy of the script.
---
## Page: Google Verification Phone Scams
Source: https://nmbgeek.com/blog/google-verification-phone-scams/
Summary: An archived guide to unsolicited Google business listing calls, common scam tactics, and protecting your money and account access.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Google Verification Phone Scams
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
March 12, 2018
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

## I hate scammers...
and people wasting my time. First things first – Google does not randomly call you to verify a business listing. Unless you have attempted to claim a business listing on Google Maps. You will then be called while you are still on the page and asked to enter a verification code. **Anyone claiming to be calling from Google to verify your business listing is wasting your time.**They do not work for Google! They may or may not be “Google Partners”, and if they are they are violating their agreement with Google. Google Partners is a very easy program to sign up for and allows a person to take Google Certification Exams and link users within a company. It is also a great tool for finding a company to handle your online marketing. If you are looking for online marketing, seo, and other business services please [click here to set up an appointment for a free consultation](https://nmbgeek.com/contact/).
### If you are annoyed with these phone calls there are a few things you can do:
[(more…)](https://nmbgeek.com/blog/google-verification-phone-scams/#more-171)
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: How to Get In Safe Mode for Windows 10, 8 & 8.1
Source: https://nmbgeek.com/blog/how-to-get-in-safe-mode-for-windows-10/
Summary: Two ways into Safe Mode on Windows 10, 8 and 8.1: hold Shift and restart from the Ctrl+Alt+Del screen, or force three failed boots into Recovery Options.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# How to Get In Safe Mode for Windows 10, 8 & 8.1
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
December 11, 2018
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

We just started a [YouTube Channel Here!](https://www.youtube.com/channel/UCrL_by42pdYjdq-aLBPK7uw)
On earlier versions of Windows such as Vista and 7 entering into Safe Mode was a matter of tapping F7 repeatedly during startup and then selecting the desired form of Safe Mode. While the different types of Safe Mode, such as standard, with command prompt, and with networking are still available, the method of getting there is slightly different.
## From Windows
You now access Safe Mode through the Recovery Options screen which is usually only presented when your computer is failing to start up correctly. Sometimes however you need to get there for other reasons.
When you are able to access Windows (or even just your login screen) accessing Safe Mode is fairly simple. The fastest way is to Press the Ctrl + Alt + Del buttons all at the same time. This brings up a screen allowing User account options such as Locking, Switching, Signing Out, and accessing the Task Manager. Once you are at this screen to get to Safe Mode you can simply hold the Shift key, select the Power Icon in the bottom right corner and while still holding shift select restart.
## Boot Failure
The previous explained and visualized method works great when Windows is working correctly or at least getting to the login screen, but what about when that isn’t the case?
Generally when startup fails 3x in a row it will attempt to diagnose the problem and take you to the desired Recovery Options menu which will allow you to boot into Safe Mode (along with Automatic Repair, System Restore, or the often needed Command Prompt). Sometimes Windows will almost boot to the login screen and not record the failed startup attempts and thereby never take you to the desired screen.
When this happens or if you need to speed up the process the simplest way is to start your computer and as soon as you see the dots begin spinning press and hold the power button (until device powers all the way off). Startup again and following the same procedure shut it right back off at the first sign of dots. By the third time doing this you should be see the spinning dots accompanied with the text ‘Diagnosing Repairs’. This is what we want to see.
‘Diagnosing Repairs’ may or may not be followed by ‘Attempting Automatic Repairs’ and the screen or combination of screens may take anywhere from 30 seconds to 10+ minutes if it is actually attempting repairs. Once this process completes (don’t interrupt it by powering off or restarting again) you should get an ‘Advanced Options’ menu.
Follow the prompts to reboot in Safe Mode as shown in this video:
## Other Methods
There are a few other methods for accessing the Recovery Options menu that are similar to the first method and they are also described in video tutorials located in our [Safe Mode Playlist](https://www.youtube.com/playlist?list=PLyJRqix8T7Rd5ufksb94pSGs9LKWC6LO2) on YouTube.
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: How To: Remove Updates from Windows 10 using Command Prompt
Source: https://nmbgeek.com/blog/how-to-remove-updates-from-windows-10-using-command-prompt/
Summary: Remove a bad Windows update from the Recovery Environment command prompt using DISM /Get-Packages and /Remove-Package, with a video walkthrough.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# How To: Remove Updates from Windows 10 using Command Prompt
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
January 2, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

This video guide covers how to remove Window’s Updates in the builtin Recovery Environment, found in Windows 8, 8.1, & 10, using the Command Prompt and DISM commands. Commands and directions are also located below the video.
## To access the ‘Recovery Environment’:
Hold Shift key while choosing Restart from Start Menu or Ctrl+Alt+Del menu. If you are stuck in a boot loop after updates you should get to the recovery environment after 3 interrupted updates. If the boot loop occurs after the dots have finished spinning you may have to manually interrupt the start up process. As soon as you see the dots start spinning just hold your power button until the device powers off. Start up again and as soon as the dots start spinning hold the power button again. After interrupting three times in a row you should get the option for ‘Advanced Options’ which will take you to the built in ‘Recovery Environment’. From there choose ‘Troubleshoot’ > ‘Advanced Options’ > ‘Command Prompt’.
### Commands Used:
```
DISM /Image:C:\ /Get-Packages
DISM /Image:C:\ /Remove-Package /PackageName:XXPASTE-PACKAGE-NAME-HEREXX
```
To copy in Command Prompt: Highlight text and press Ctrl+C
To paste in Command Prompt: Right Click
Check out our [YouTube Channel Here!](https://www.youtube.com/channel/UCrL_by42pdYjdq-aLBPK7uw)
If you have any issues or questions just comment below!
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
---
## Page: How To Turn Your Laptop’s Wireless On
Source: https://nmbgeek.com/blog/how-to-turn-laptop-wireless-on/
Summary: A long list of laptop wireless switch locations and Fn key combinations by model, covering Acer, Dell, HP, IBM, Sony, Toshiba and many more.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# How To Turn Your Laptop’s Wireless On
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
July 26, 2011
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.


A common problem with laptops is that their wireless adapter can often be turned off using switches or key strokes to allow the laptop to save power. What occasionally happens is that a user accidently hits these combinations or switches and then find themselves without wifi! To answer this problem I have began compiling a list of these keystrokes and switch locations. If you have something to add just shoot me a message through my contact form and I will add it to this list as soon as possible.
Most laptops either have a physical switch dedicated to turning the wireless adapter on / off OR they have a key combination dedicated to this procedure. Rarely both are used in combination. When both are used in combination the physical switch must be turned on before the key combination can be turned on.
**Physical Switches**The physical switch can be a slide on the side or front edge of the computer or above or below the keyboard. It may even be on a touch sensitive section that just changes the LED color to represent on or off.
**Key Combinations**
These combinations often use the Fn Key and another key such as an F1-F12 Key. If you see button combinations as the correct function for your model then you would do this by HOLDING the first key and TAPPING the corresponding key. In the case of FN + F5 you would HOLD the FN key and TAP the F5 key and then RELEASE BOTH of them.
The FN key is generally found in the lower right of your keyboard near the Ctrl key with a different color writing. The icons on your keys that are the same color as your FN key are generally controlled in this same manner. This often includes volume, toggling external monitors, and many more settings.
Generally your wireless on and off toggle is marked with a radio tower like icon as may be seen in the top right of this article. Also an onscreen dialog may or may not pop up confirming the change of wireless status depending on the Make and Model of your computer.
If you have any questions feel free to contact us via our [Contact Form](https://nmbgeek.com/contact/).
## ACER
- Acer (General) – FN+F5
- Aspire 1000/1640Z/1690/2012 – Launch Keys above the keyboard
- Aspire 16xx (General) the satellite-like launch button above the keyboard
- Aspire 2000 Series (less Aspire 2012, See Above) – Button on the Front of the Laptop
- Aspire 3005 – On the lower right-hand side of your laptop
- Aspire 3500 – Wifi switch is in the group of buttons to the left of the power-on button. It’s the third button from the left with the planet on it. There is a wifi indicator under the trackpad, it’s the led with the satellite on it.
- Aspire 5612 sliding button on the side of the laptop
- Aspire 9302 the blue button on the left-hand side of the laptop
- Aspire 94xx (General) the key found below the Lock key
- Aspire One, in the lower right corner of the palm rest is a small strip with a picture of an antenna on it. An LED to the right of the strip lights to indicate the wireless is turned on.
- Extensa 2000/2500 Series – Far Right launch button above the keyboard
- Ferrari 3000/3020/3400/4000 – Button on Front of Laptop
- Travelmate C Series – Far Left hot key and then choose WLAN from menu that appears
## ADVENT
- 7086/7096 – Button next to the power button
- 7100 /7104 – Fn+F2
- 7201 – Wireless key top Right and then Fn+F2
- 8117 – Small slide switch on the Front of Laptop
## APPLE / MACINTOSH
- MAC OS X 10.4.x (Tiger & Earlier)
- Open MAC Hard Drive > Applications > Utilities folder > Set the Configure pull-down to Airport. Make sure the “Airport Power:” says On. (This is the status or your Mac’s Airport card.) If not, click “Turn Airport On” button.
- MAC OS X 10.5.x (Leopard)
- Click on the: Apple Icon > System Preferences > Network > Airport > Airport Power – On/Off
## ALIENWARE
- M17x – Fn+F2
## ASUS
- ASUS (General) – Fn+F2 (some models may have a separate switch)
- F5R – Toggle switch located on the Left side of the notebook
- G1S – This laptop supports multi-model switching of the wireless and bluetooth radios via the key command Fn+F2:
- 1st press: On both Bluetooth / On WiFi
- 2nd press: Off Bluetooth / On WiFi
- 3rd press: On Bluetooth / Off WiFi
- 4th press: Off Bluetooth / Off WiFi
## BENQ
- Joybook 5000u-d09 – Fn+F12
## DELL
- General – Fn+F2 or Fn+F8 or Fn+F12
- 600m – Fn+ F2
- E6400 on the right above the headphone and microphone ports, (next to “Dell Wi-Fi Catcher” button.)
- Inspiron series (Less 5100, See Below) – Fn+F2
- Inspiron 1510/500M/600M/1150 – Fn+F2
- Inspiron 1505 – Wireless icon next to the time (lower right hand corner of screen) right-click & turn radio on.
- Inspirion 1521 – Sliding switch (WiFi Catcher) is on the right side of the laptop (with light).
- Inspiron 1525 – Wireless icon next to the time (lower right hand corner of screen) right-click & turn radio on. There may also be a little on/off switch on the side or front of the laptop that you need to check is on.
- Inspiron 1720 – on/off switch on the left side of the laptop
- * Inspiron 5100 – No Built-in Wireless for this model
- Inspiron 6000/8600/9300 – Fn+F2
- Latitude D400/D500/D600/D610/D400/D500/D600/D610/D620/D800 – Fn+F2
- Latitude D630 (D640 and Newer???) – toggle switch on the Left side towards the Front by the PCMCIA slots and headphone jack
- Latitude E6400 – Fn+F2
- Latitude X300 – Fn+F2
- Vostro 1500 – Big button on Left side at rear (No Fn+F# combo to toggle wireless on/off for this model.)
- *Wifi activation on Dell d610*
- Wifi on D610. You can also go to the BIOS by pressing F12 on boot, In the WiFi section, choose 1 of the 3 options: (Off) (By Application) (By pressing Alt+F2)
## E-MACHINES
- E-machine (General) – FN+F2
- E-System
- 3115 – Slide switch on Front of Laptop (Also has Fn+F5 function)
- FUJITSU/SIEMENS
- Fujitsu (General) – Fn+F10
- Fujitsu/Siemens (General) – Use either the sliding “Wireless” button on the right-hand side of the laptop or use the Fn+F2 key combo. Some models have the ON/OFF wireless button just below the touchpad.
- Amilo A & D Series – Button above the keyboard on top Right
- Amilo K Series – No Built-in Wireless for this model
- Amilo L/EL Series – Fn+F1
- Amilo La Series – Fn+F2
- Amilo Li Series – Easy launch button (one of 3) on top of keyboard
## GATEWAY
- Gateway Laptop – Switch on side and/or Fn+F2
- 7805u FX – Wireless toggle is on front right. Software switch is Fn+F2.
- Fn is not in normal position and is located on the bottom left of the keyboard where CTRL is typically located.
## GERICOM
- Cinema 16100 model use the Fn+F1 key combo
## HP (HEWLETT-PACKARD) / COMPAQ
- HP/Compaq (General Older models) – Button on upper Left on keyboard deck
- HP/Compaq (General Newer models) – Button on lower Left below keyboard or Touch Sensitive Button on Upper Right of Keyboard with Radio Icon (Orange = Off | Blue = On)
- Compaq (General) Press and hold the antenna-button on the upper section of your keyboard
- Compaq Armada Services – No Built-in Wireless for this model
- Compaq Pavilion ZX5190 – Wireless switch is on the keypad, slightly separate from the keys. It has a wireless symbol on it.
- Compaq Presario – Button on the Back
- Compaq Presario CQ Series – Button above the keyboard (antenna icon on button)
- Compaq Presario M2000 – Button above the keyboard (antenna icon on button)
- HP/Compaq 6910p Notebook PC above keyboard to left, 2 buttons to the right of the power button.
- (Wireless on/off LED is on the lower left. left of power/standby light.)
- HP 600 – Button on lower Left below keyboard
- HP NC4000/4010 – Button above Keyboard
- HP NC4220 – Button on Left Side of Laptop Near USB Port
- HP NC6000/6220 – Button above Keyboard
- HP NX9010 – Button on Front side of Laptop
- HP Omnibook 6200 – Button on Left side of Laptop
## IBM / LENOVO
- IBM General – Some models have the wireless slide button on the side of the laptop.
- IBM General(2) – On most models, Fn+F5 opens the menu to display the wireless radio status
- IBM DV series – use the antenna-like button found on the upper section of your keyboard.
- IBM R40 – Use the Fn+F5 key-combo.
- IBM Thinkpad (General) – Most have software switch or button on Left hand side.
- IBM Thinkpad (model not further identified) wireless switch on Front edge of case.
- IBM T43/X32 – Fn+F5 -Click “Turn On”
- IBM ZD series use the antenna-like button just below the “Lock” key.
- Lenevo – button on the front
- Lenovo T-61 – Slide button on the front of the laptop
- Lenovo X61 – Front edge on the bottom half of the clam shell, to the right of center and facing somewhat downward as the bezel is beveled there.
## MEDION
- General – Fn+F1 or Fn+F2
## MSI
- General – Antenna-like button close to the power switch
- U100 – Fn+F11
## PACKARD BELL
- Easynote B3600 use the Fn+F1
- EasyNote E2/MV46/008 – Fn+F1
- Easynote W7730, Antenna-like wireless button on the side of the laptop.
- MZ36-U024 – Fn+F2
## PHILIPS
- General – Fn+F2 key combo
- X54 – Antenna-like button close to the power switch.
## SAMSUNG
- General – Blue button found in the middle section of the keyboard
## SHARP
- General – Fn+F2
## SONY
- General – Software Switch, “Wireless Device Switch icon” in systems tray (Gray square labled LAN)
- (Many models use both a physical and a software switch)
- Sony Vaio (General) – Switch on front left
- VAIO (General, not further identified) – Button (or slide switch) on the Front Left or Right side
- VAIO – VGW-AW125T – Button on Front Left, below keyboard
- VAIO – VGN-AX570G – Button on Front Left
- VAIO – VGN-B2560 – On top left of Keyboard (light say’s wireless when on)
## TARGA
- Companion 811 – Fn+F2
## TOSHIBA
- General – Fn+F5 or Fn+F8 or physical switch
- A100-078 – Sliding button on the right-hand side of the laptop
- Eqium Series – Slide switch on Front of Laptop
- Libretto Series – Slide switch on Left hand side
- M1 & M2 – Switch on Left side of Laptop, towards Front
- M40 and M70 – ON/OFF antenna-like button.
- Portege & Qosmio Series – Slide switch on the Left hand side
- Quantium Series – Slide switch on the Left hand side
- R100 – Switch on Right side of Laptop
- Satego Series – Slide Switch on the Right hand side
- Satellite (General) – Physical switch on front of case, below keyboard deck, to left of center. (FN+F8 shows wether wireless communications is enabled or disabled. )
- Satellite (General 2) – On the Front of case, below keyboard deck, to left of center, (may require Fn+F8 to turn on)
- Satellite 1400/1405 – (may/maynot have wireless) For models w/wireless radios, right side of case, below Floppy Drive.
- Satellite L355D-S7825 – switch is on the front edge of the case, below keyboard just left of center.
- Satellite A60-S1662 – Slide switch on right side between USB Port and Mic & headphone jacks
- Satellite Pro – On the Side or Front
- TE2000 – Switch on Left side of Laptop, by volume control
- Tecra 2100 – Switch on Left side of Laptop, by volume control (FN+F8 shows whether wireless) communications is enabled or disabled.
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Archived comments (5)
These historical comments are shown as they appeared publicly on the original site. New replies are closed.
1. **Vanessa** · December 28, 2018 Please tell me how to turn my WiFi on on the Probook 450
2. **Clint Johnson** · December 28, 2018 Hi Vanessa, There are a few generations of the Probook 450 signified as G1, G2, G3 etc… Most appear to have a dedicated WiFi button at the top right above the keyboard. Does pressing this create any change in the wireless status? The next thing to do would be to go to the Device Manager and check the status of your Wireless there. The simplest way to get to the Device Manager and clicking in the white search area on the main taskbar and typing Device Manager. In Device Manager you will see ‘Network Adapters’. If you click the arrow ‘>’ that will expand the list to show your wireless, wired, and any other networking related items. If any have an exclamation point or error the list may already be expanded. You will also want to right click the Wireless adapter and select ‘Properties’ to see the device status. Let me know what you find there and we can troubleshoot further.
3. **Stan** · July 8, 2019 I dont have the tower like key on my Lenevo Idealad 110
4. **Clint Johnson** · July 8, 2019 It looks as if the 110 model has an “Airplane” which is Fn+F7 which puts the laptop into airplane mode. In the lower right of your computer do you see this icon with wireless waves? WiFi in blue means wifi is on. If you don’t see that you may need to click your start menu (lower right) and begin typing **Device Manager**. In device manager you should see **Network Adapters**. Make sure you have see something related to your wifi and that it isn’t disabled there. If you don’t see anything related to wifi there but you do have Unknown devices elsewhere this is probably your wifi and you will need to download the drivers from another pc and install on your IdeaPad via USB. Check that your model number matches 110-14ISK or 110-15ISK and download from here: [https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/100-series/110-14isk/downloads/ds118020](https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/100-series/110-14isk/downloads/ds118020) If this does not match your model you can search on that site for the exact match to your model number.
5. **Melissa Taylor** · January 5, 2025 Wow, you are awesome!!! Thank you so much for helping me get my Internet back! And by the way, although I live in Oregon, now, I used to live in the Carolinas and know exactly where calabash is. You must be living a good life!
---
## Page: Imagine the Web Without ADs!
Source: https://nmbgeek.com/blog/imagine-the-web-without-ads/
Summary: An archived look at browser ad blockers, including a 2019 update explaining the switch from AdBlock to uBlock Origin.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Imagine the Web Without ADs!
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
October 22, 2014
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

Update 2019: Don’t use AdBlock as they sell your data and allow advertisers to pay them to bypass their blocking. [uBlock Origin](https://ublockorigin.com/) is my recommended go to at this time. Make sure you download uBlock Origin ([https://ublockorigin.com/](https://ublockorigin.com/)) and not just uBlock.
Details about why I don’t recommend AdBlock: [https://www.cnet.com/news/privacy/5-details-about-adblock-plus-every-browser-user-should-know/](https://www.cnet.com/news/privacy/5-details-about-adblock-plus-every-browser-user-should-know/)
uBlock vs uBlock Origin: [https://www.reddit.com/r/ublock/comments/32mos6/ublock_vs_ublock_origin/](https://www.reddit.com/r/ublock/comments/32mos6/ublock_vs_ublock_origin/)
Download Adblock Plus now at http://www.adblockplus.org
## Why?
- It’s Free
- Optionally leave on “non-obtrusive” advertising
- Leaves more room for real Content
- Much less chances of accidentally downloading spyware
- Works on Chrome, Firefox, IE, **Android**, Safari, and Opera
See what Facebook and Google look like without Ads when you click “Read More” below…
Download Adblock Plus now at http://www.adblockplus.org
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Keeping Your Computer Safe and Secure
Source: https://nmbgeek.com/blog/keeping-your-computer-safe-and-secure/
Summary: Dated 2011 security advice on real time scanning, Windows and Mac updates, and patching third party software. The author no longer recommends AVG.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Keeping Your Computer Safe and Secure
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
July 5, 2011
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

Update: This is old content from 2011 and I do not recommend AVG anymore. I will hopefully make a new post with new recommendations in the near future.

Computer security is a big deal with more and more confidential information being used daily on the internet. From simple social media sites such as facebook to online banking. Keeping secure is a matter of proper computer security settings and user diligence.
The first step is keeping and insuring your computer is kept malware, spyware, and virus free. If you are a Windows user you are subject to more attacks than Apple simply because there is more of a market to attack. However Apple OSx users are now being subject to the same threats as it becomes a more prevalent operating system. So how do virus and malware makers make money? Many ways. The two most popular are getting paid everytime that pesky pop-up shows on your screen and the second is selling your information in the black market. A good reading on this subject is [here](http://www.gmhaddad.us/how-do-hackers-make-money).
How do they get in?
The biggest source of infections (99%) are through ‘web attacks’ and would not be stopped by just a virus or malware scanner. Users today need real time protection with constant updating which means as your computer is working it is continuing to scan itself with the latest information against malware. AVG has what is called [‘AVG Link Scanner'(click to download)](http://linkscanner.avg.com/) independently downloadable for Windows or Mac OSx. This adds onto popular web browsers and checks sites as you visit them for safety. This is also built into all AVG Virus Protection Programs. For Windows users I recommend AVG’s Internet Security packages because of their all inclusive security for download protection, firewall protection, wireless network intrusion notification, anti-spam, and identity protection abilities all at a reasonable price. However a basic free version with real time protection of their anti-virus and anti-spyware is available [here](http://free.avg.com/us-en/download-free-antivirus-thank-you). The NMB Geek is an AVG authorized reseller so for information about pricing and purchasing a licensed copy of AVG Internet Security Home or Business Edition **at a discount** please contact me at 843-997-4335 or use our contact form. Please not that the latest versions of Mac OSx now have built in malware protection.
The second source of infections (and just as important as having real time virus protection) is not having your operating system’s latest updates installed. These updates often secure back doors into your computer. These are generally received automatically; however if your computer is not left online and connected to the internet for long enough to download and install automatically they may require a manual update. To do a manual update: [Windows Users (click for instructions)](http://update.microsoft.com/) or [Macintosh Users (click for instructions)](http://www.apple.com/softwareupdate/).
Also other software such as Adobe Flash, Adobe Reader, Microsoft Office, Internet Explorer, Firefox, Chrome, and other programs should also be kept up to date as they can also be the source of some issues.
Conclusion
For a safe and secure computer experience their are only a few simple requirements. First, a trusted real time scanning and automatically updating security package such as the aforementioned AVG Internet Security Suite. Secondly, up to date operating system security updates obtainable through their manufacturers. Last, but not least, keep other third party software up to date for a pleasant computing experience.
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Model Number Locations
Source: https://nmbgeek.com/blog/model-number-locations/
Summary: Where to find the model number or service tag on Acer, Asus, Dell, HP, Apple and Android devices, with photos of each label location.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Model Number Locations
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
February 23, 2018
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

There are many places that manufacturers hide their device’s model numbers. It used to be a simple label printed on the bottom or side of your device that clearly listed everything is easily readable text. That was just too easy so manufacturers had to complicate things and seem to try and hide them now or make them almost illegible. While this is not a comprehensive guide we do list most of the main manufacturers and where they hide their model numbers.
## Select Manufacturer
[Acer](#acer) | [Android](#android) | [Asus](#asus) | [Dell](#dell) | [HP](#hp) | [Apple](#apple)
---
### ACER
Desktop Model Number Location
The model number is located on the right hand side of the desktop near the bottom of the side panel on a white label.

Laptop Model Number Location
The model number is located on the bottom side of the laptop on a white label.

NOTE: Acer 2-in-1 Switch products are labeled on the bottom edge of the tablet.
---
#### Android
The model number for Android devices can always be found by opening the Settings App and selecting the About Device option usually located at the end of the menu.

Alternatively the model can also be found on the device’s original packaging and sometimes on the back side of device or under battery for models that have a removable battery.
---
##### ASUS
The model number of all types of Asus devices are listed at there website [here](https://www.asus.com/us/support/article/565).
Laptop Model Number Location
The model number is located on the bottom side of the laptop on a label.

---
##### DELL
Note: The preferred Dell identifiers are the Service Tag or Express Service Tag identifiers. This allows lookup of full device specifications and provides better support and diagnosis help. The Service Tag is a 7-character code, and the Express Service Tag is a 10 to 11-digit code that is a numeric version of the Service Tag.
[Full Dell Service Tag Location List from Dell.com](http://www.dell.com/support/contents/us/en/04/category/product-support/self-support-knowledgebase/locate-service-tag)
Desktop Service Tag Location
Both codes will probably be located on the back of the computer case, but can also be located on the top or side of the system.
Laptop Service Tag Location
The service tags may be on the back side of device, under removable cover, or under removable battery.
Tablet and 2-in-1 Service Tag Location
The service tag may be on the bezel, under removable cover, or under kickstand.
---
##### HP
Note: HP Devices often contain both a product number and a model number. Either of these is acceptable in identifying your exact device.
Desktop Model Location
[HP Desktop Identification Locations from HP.com](https://support.hp.com/my-en/document/bph07555)
Model number and product number will most likely be located on the side of the computer case, but can also be located on the top or rear of the system.


Laptop and Portable Model Locations
[HP Notebook Identification Locations from HP.com](https://support.hp.com/my-en/document/c00033108)
The model number may be on the rear of the device, under the battery, under a removable cover, or under the kickstand. Older models are most likely on a label on the back cover. Newer devices are usually located under the battery or under a removable cover on back of device.




---
##### Apple
Note: Apple products are identified with a model number that begins with an A followed by four numbers ie: A1418 and often a 4 digit EMC number. They also have an Apple part number that consists of 9 letter/number combination beginning with M. To get the part number you will often have to lookup your serial number on a site like [everymac.com](https://everymac.com/ultimate-mac-lookup/). The part number is more specific however either are acceptable for most situations.
iMac
The serial number of your iMac is printed on its surface. To find it, shut down your iMac and unplug any connected cables so you can safely move it. Then gently lay the computer face-down on a soft, clean towel or cloth.
The model number is on the underside of the base (or foot) of the iMac, along with serial, bar code, and regulatory markings.

MacBook

## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: New Name, Same Great Service
Source: https://nmbgeek.com/blog/new-name-same-great-service/
Summary: Why The NMB Geek became Choice Technology Solutions, LLC in 2018, and what the name change meant for our customers.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# New Name, Same Great Service
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
September 12, 2018
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

As us and our services have matured so has our name. Previously known as “The NMB Geek”, we are now Choice Technology Solutions, LLC. The name “NMB Geek” was created almost a decade ago and does not sound as mature as our business and service offering now is. Although not intentionally we were also often confused with Best Buy’s service, “The Geek Squad”. Our new name also removes this issue and makes it clear we are a distinct entity capable of satisfying all types of technology related needs.
Giving clients the best service on the beach is still our number one priority! We hope to continue providing great service for decades to come and can’t wait to be your “Choice”!

## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: IT troubleshooting guides and tips.
Source: https://nmbgeek.com/blog/page/2/
Summary: Troubleshooting guides, technical tips, and projects from Choice Technology Solutions. Page 2 of 4.
CTS blog
# IT troubleshooting guides and tips.
Notes from hands-on work with business systems, software, and networks. These articles keep their original publication dates; older instructions may need adapting.
[All articles](https://nmbgeek.com/blog/)
[Subscribe with RSS](https://nmbgeek.com/feed/)
Page 2 of 4 · 19 articles
July 29, 2019
## G-Suite to Office 365 Migration – No Contact Folder Permissions Solution
How I restored access to Outlook Contacts folders after a G-Suite to Office 365 migration, with a 2022 update on the script download.
March 3, 2019
## Remove Atera Agent and Splashtop Streamer with PowerShell
A PowerShell script I used to remove Atera Agent and Splashtop Streamer after taking over IT support for an office.
January 23, 2019
## Be In Control Of Your WiFi
A look at managing Wi-Fi with Ubiquiti UniFi, including connected devices, coverage gaps, interference, and links between locations.
January 6, 2019
## Dynamic DNS Updating with Route 53 & Linux
A Bash script and cron job for updating an Amazon Route 53 DNS record when your home IP address changes, based on my Ubuntu setup.
January 2, 2019
## How To: Remove Updates from Windows 10 using Command Prompt
A video walkthrough of removing Windows updates with DISM commands in the Recovery Environment for Windows 8, 8.1, and 10.
[← Newer articles](https://nmbgeek.com/blog/)
[Page 1](https://nmbgeek.com/blog/)
[Page 2](https://nmbgeek.com/blog/page/2/)
[Page 3](https://nmbgeek.com/blog/page/3/)
[Page 4](https://nmbgeek.com/blog/page/4/)
[Older articles →](https://nmbgeek.com/blog/page/3/)
## Browse by topic
### Categories
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
### Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[caching](https://nmbgeek.com/blog/tag/caching/)
[developers](https://nmbgeek.com/blog/tag/developers/)
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
[route53](https://nmbgeek.com/blog/tag/route53/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: IT troubleshooting guides and tips.
Source: https://nmbgeek.com/blog/page/3/
Summary: Troubleshooting guides, technical tips, and projects from Choice Technology Solutions. Page 3 of 4.
CTS blog
# IT troubleshooting guides and tips.
Notes from hands-on work with business systems, software, and networks. These articles keep their original publication dates; older instructions may need adapting.
[All articles](https://nmbgeek.com/blog/)
[Subscribe with RSS](https://nmbgeek.com/feed/)
Page 3 of 4 · 19 articles
December 11, 2018
## How to Get In Safe Mode for Windows 10, 8 & 8.1
How to reach the Recovery Options screen and start Windows 10, 8, or 8.1 in Safe Mode when you need to troubleshoot a problem.
September 12, 2018
## New Name, Same Great Service
In 2018, The NMB Geek became Choice Technology Solutions, LLC. Here’s the story behind the name change and what it meant for our customers.
March 21, 2018
## Solid State Drive Performance Upgrades
Why replacing a hard drive with an SSD can speed up an older computer, with notes on read and write speeds and copying your existing drive.
March 12, 2018
## Google Verification Phone Scams
Notes on unsolicited calls about Google business listings, the tactics callers use, and how to avoid handing over money or account access.
February 23, 2018
## Model Number Locations
Find the model number or service tag on your computer, laptop, or mobile device, with photos showing where manufacturers put their labels.
[← Newer articles](https://nmbgeek.com/blog/page/2/)
[Page 1](https://nmbgeek.com/blog/)
[Page 2](https://nmbgeek.com/blog/page/2/)
[Page 3](https://nmbgeek.com/blog/page/3/)
[Page 4](https://nmbgeek.com/blog/page/4/)
[Older articles →](https://nmbgeek.com/blog/page/4/)
## Browse by topic
### Categories
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
### Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[caching](https://nmbgeek.com/blog/tag/caching/)
[developers](https://nmbgeek.com/blog/tag/developers/)
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
[route53](https://nmbgeek.com/blog/tag/route53/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: IT troubleshooting guides and tips.
Source: https://nmbgeek.com/blog/page/4/
Summary: Troubleshooting guides, technical tips, and projects from Choice Technology Solutions. Page 4 of 4.
CTS blog
# IT troubleshooting guides and tips.
Notes from hands-on work with business systems, software, and networks. These articles keep their original publication dates; older instructions may need adapting.
[All articles](https://nmbgeek.com/blog/)
[Subscribe with RSS](https://nmbgeek.com/feed/)
Page 4 of 4 · 19 articles
November 15, 2017
## Virus and Malware Prevention Tips
An archived guide to software updates, security scans, suspicious email links, and fake support calls. Some of the products mentioned are no longer current.
October 22, 2014
## Imagine the Web Without ADs!
A look at browser ad blockers and why I switched to uBlock Origin. This archived post includes my 2019 update.
July 26, 2011
## How To Turn Your Laptop’s Wireless On
Check your laptop’s wireless switch or keyboard shortcut if Wi-Fi has been turned off. This reference lists locations and key combinations by model.
July 5, 2011
## Keeping Your Computer Safe and Secure
Computer security advice originally written in 2011, with a later note withdrawing my AVG recommendation. Product recommendations are kept for historical reference.
[← Newer articles](https://nmbgeek.com/blog/page/3/)
[Page 1](https://nmbgeek.com/blog/)
[Page 2](https://nmbgeek.com/blog/page/2/)
[Page 3](https://nmbgeek.com/blog/page/3/)
[Page 4](https://nmbgeek.com/blog/page/4/)
## Browse by topic
### Categories
[Bash / Linux](https://nmbgeek.com/blog/category/scripts/bash-linux/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
### Tags
[aws](https://nmbgeek.com/blog/tag/aws/)
[caching](https://nmbgeek.com/blog/tag/caching/)
[developers](https://nmbgeek.com/blog/tag/developers/)
[DJI](https://nmbgeek.com/blog/tag/dji/)
[Exchange Powershell](https://nmbgeek.com/blog/tag/exchange-powershell/)
[G-Suite](https://nmbgeek.com/blog/tag/g-suite/)
[How To Videos](https://nmbgeek.com/blog/tag/how-to-videos/)
[linux](https://nmbgeek.com/blog/tag/linux/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[Office 365](https://nmbgeek.com/blog/tag/office-365/)
[route53](https://nmbgeek.com/blog/tag/route53/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[Spark](https://nmbgeek.com/blog/tag/spark/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
[Wifi](https://nmbgeek.com/blog/tag/wifi/)
[youtube](https://nmbgeek.com/blog/tag/youtube/)
---
## Page: Remove Atera Agent and Splashtop Streamer with PowerShell
Source: https://nmbgeek.com/blog/remove-atera-agent-and-splashtop-streamer/
Summary: A PowerShell script that removes the Atera RMM agent and Splashtop Streamer: stops the services, deletes the folders, and clears the registry keys.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Remove Atera Agent and Splashtop Streamer with PowerShell
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
March 3, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.
## What does this do?
I recently started managing an office that the previous MSP was using Atera agent for their RMM solution. I did not have access to their uninstall tool and needed a way to automate this across a large number of computers. It is very simple code but as always make sure you review what it is going to do and understand everything and then test on a few computers manually before deploying through your network.
### The Code
```
#Kill and Remove Related Services
Get-Service | Where {$_.ServiceName -Like "Splash*"} | Stop-Service -force | Remove-Service
Get-Service | Where {$_.ServiceName -Like "SSU*"} | Stop-Service -force | Remove-Service
Get-Service | Where {$_.ServiceName -Like "Atera*"} | Stop-Service -force | Remove-Service
#Kill Ticketing Agent and System Tray Process
Get-Process | Where {$_.ProcessName -Like "Ticket*"} | Stop-Process -force
#Remove Ticketing Agent from each User's AppData Folder
$users = Get-ChildItem C:\Users.
foreach ($user in $users){
$folder = "C:\users\" + $user + "\AppData\Local\Temp\TicketingAgentPackage"
Remove-Item $folder -Recurse -Force -ErrorAction silentlycontinue
}
#Remove Atera Program Files Folders
Remove-Item "C:\Program Files (x86)\ATERA Networks" -Recurse -Force -ErrorAction silentlycontinue
Remove-Item "C:\Program Files\ATERA Networks" -Recurse -Force -ErrorAction silentlycontinue
#Removes Registry for Software and Autorun
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "AlphaHelpdeskAgent"
Remove-Item -Path 'HKLM\SOFTWARE\ATERA Networks'
#Uninstall Splashtop Streamer
$app = get-wmiobject -class Win32_Product -filter "Name = 'Splashtop Streamer'"
$app.Uninstall()
```
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
[Powershell](https://nmbgeek.com/blog/category/scripts/powershell/)
[Scripts](https://nmbgeek.com/blog/category/scripts/)
## Archived comments (4)
These historical comments are shown as they appeared publicly on the original site. New replies are closed.
1. **shane** · October 19, 2019 works great thanks
2. **Martyn Clarke** · January 29, 2021 Hi, Thanks for this. I got a few errors but it seemed to do the trick. I too found Atera sadly lacking and Splashtop was terrible – like a cancer – could not get rid of it. I work in the UK as a single practioner. Can I ask what you use for your trusty RMM? Best regards Martyn
3. **Clint Johnson** · August 4, 2022 Sorry I never saw the last part asking about what I use and just revamped my website and saw this. I use Microsoft Endpoint manager for clients that are using the 365 ecosystem. For everyone else I actually use Comodo’s ITarian which allows python scripting which will also allow running Powershell scripts. It has a great remote support tool that can be setup to allow unattended access or you can have the user approve, patch management, ticketing system, and more. [https://www.itarian.com/](https://www.itarian.com/) It is free for up to 50 devices and $1.25 each if you go over 50.
4. **don** · September 30, 2022 I switched from Itarian that was Komodo and “free forever” and then became not free and it’s trash and Atera is 100% better.
---
## Page: Solid State Drive Performance Upgrades
Source: https://nmbgeek.com/blog/ssd-performance-upgrades/
Summary: Why an SSD upgrade speeds up an older PC: seek time versus NAND flash, real read and write speeds, a Samsung 860 EVO pick, and cloning the old drive.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Solid State Drive Performance Upgrades
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
March 21, 2018
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

Solid State Drives, aka SSDs for short, are usually the biggest bang for the buck upgrade in modern computers. These days most high performance desktop and laptop computers and some mid-range devices ship from the factory with a SSD already installed.The average user however does not want or need to spend thousands of dollars on a high performance PC. Maybe your device is a few years old and performs decently for your needs, but you often find yourself wishing you could give it a decent boost without breaking the bank. If that is the case an SSD upgrade may be just the thing for you.
## How Conventional Hard Disk Drives (HDDs) Work
Conventional HDDs store your data on a set of magnetized disks inside a small enclosure. It is similar to a stack of CDs that spin at 5400+ RPMs. While their performance has improved greatly over the years they still have a considerable “seek time”. Seek Time is the time it takes the disk to find the start position of your desired data on the disk. Say you go to open Microsoft Word. Your hard drive spins up and a small arm has to go to the spot on the disk where the file containing the program for Microsoft Word is at. It then reads that data and transfers it to your processor and to memory which eventually ends up with the MS Word launch screen displayed for you to make a selection such as a new document, open a recent one, etc. Now you select to open a document which you had started writing, but never got to finish. The HDD then seeks and reads that data and a process similar to opening MS Word occurs. Now if somewhere during that process of opening Word or your document you get impatient and decide to open your web browser to look something up or read news the HDD has to send its little seek arm to a different position on the platter and open your web browser. At this point it is also trying to read the data necessary to open Word. It appears as if the drive is reading both of these positions at the same time however in reality it is usually going back and forth between the points of data and sending small amounts of each at a time to allow multitasking. This is a very simplified explanation but it gives an idea of how your HDD works. The average read/write speeds are anywhere from 20MB/s to 120MB/s for a standard HDD.
### How Solid State Drives (SSDs) Work
Now that you have an idea of how a conventional HDD works we can try and explain how a SSD works. SSDs do away with all moving parts. There are no platters to spin or a read arm to seek and read data locations. They are similar to a USB flash drive and store data on what is called NAND flash memory. These are circuit chips capable of reading and writing data at speeds from 500MB/s to 1,800MB/s. SSDs generally cut boot times from 1/2 to 1/4 the time of standard HDDs. Another advantage is that they consume much less power. Because there are no moving parts such as spinning platters and seek arms they generally use less than half of the power needed for a standard HDD. For laptop users this will mean extended battery life. One draw back of SSDs is the cost to space ratio.
I recommend at least a 250GB HDD for the average user which start at around $60 for a decent SSD. The [Samsung EVO 860](https://www.amazon.com/gp/product/B07864WMK8/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B07864WMK8&linkCode=as2&tag=choicetechnmb-20&linkId=42e5b98d060cb49c6861fdbd954c2de8) is my personal recommendation at the moment. It costs $59.99 on [Amazon](https://www.amazon.com/gp/product/B07864WMK8/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B07864WMK8&linkCode=as2&tag=choicetechnmb-20&linkId=42e5b98d060cb49c6861fdbd954c2de8). There are other options for less money, but Samsung SSDs are known for their performance and reliability. There is also a Samsung [EVO 860 500GB](https://www.amazon.com/gp/product/B0781Z7Y3S/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B0781Z7Y3S&linkCode=as2&tag=choicetechnmb-20&linkId=1afb7ad0ee4084684d256b8dd6088fe8) model that is currently listed for $79.99 on [Amazon](https://www.amazon.com/gp/product/B0781Z7Y3S/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B0781Z7Y3S&linkCode=as2&tag=choicetechnmb-20&linkId=1afb7ad0ee4084684d256b8dd6088fe8). Gamers and other high end users may want to consider other high end options although the EVO 860 is generally a good fit even for them. I have a Samsung EVO 860 in both my desktop and laptop computers and am very pleased with their performance. I am also a Western Digital Partner and a Seagate Partner. They have been in the HDD industry for years and also make quality and affordable SSD drives. Regardless of your choice of drives you can have it installed by a manufacturer partner right here in Little River, SC.
### Installation Costs
Installing a new hard drive after a failure is a fairly time consuming process because your operating system has to be reinstalled (Windows, Mac, Linux, etc), third party software such as Microsoft Office, Adobe, etc, and setup drivers for peripherals such as your printer or scanner. If data recovery is required and possible that can also be a time consuming task. If your conventional HDD is failing this may be necessary however if your old drive is still functioning you are in luck for a couple of reasons. I use direct drive cloning hardware and make a direct copy from your current HDD onto your new SSD drive. When your computer starts on the new SSD the only difference you should notice is how much faster it is! Also, if your old HDD is still functioning it can be reinstalled into your desktop PC for backing up of data or just extra storage space for archiving photos and documents. For laptops there is generally only one disk drive slot however your laptop HDD can be installed into an external enclosure for extra portable storage. For a quote on getting an SSD upgrade just visit the [Get A Quote](https://nmbgeek.com/contact/) page by [clicking here](https://nmbgeek.com/contact/).
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Updating MS Office with Microsoft Endpoint Manager
Source: https://nmbgeek.com/blog/updating-microsoft-office-2016-2019-volume-to-office-2021-ltsc-using-intune-microsoft-endpoint-manager/
Summary: Office 2021 LTSC stuck at Install Pending in Intune. The fix was recreating the Office 2019 app in Endpoint Manager and assigning it as an uninstall.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Updating MS Office with Microsoft Endpoint Manager
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
February 1, 2022
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

Recently I was attempting to update our Microsoft Office 2016 and 2019 applications to Microsoft Office 2021 LTSC via Microsoft Endpoint Manager. Previously to install 2019 I had created a configuration xml using [https://config.office.com](https://config.office.com/) to create my XML file and deployed it using Option 2 here: [https://docs.microsoft.com/en-us/mem/intune/apps/apps-add-office365](https://docs.microsoft.com/en-us/mem/intune/apps/apps-add-office365). Installing 2019 was easy to automate and it just worked.
Now that we just received our Volume 2021 licenses for all computers that don’t have a user licensed for 365 Business Premium I thought the upgrade would be just as easy. It should have been but I made one crucial mistake. I deleted the Intune Managed Apps that were used to install Office 2019. When I created the Office 2021 LTSC Managed App my devices were just stuck at ‘Install Pending’. I tested my XML file and verified it worked on a computer so I knew that wasn’t the issue. I attempted to add the tag and set it for the ProPlus2019Volume that was installed but that doesn’t work. The fix was that I had to recreate the 2019 XML install and set it to “Uninstall” on the devices that were getting 2021 LTSC.
My apologies that this isn’t really a technical write-up. I just got really frustrated trying to find answers as to why I was stuck at “Install Pending” and feel like this part of the process is skipped in any existing Microsoft Office Volume documentation. Of course always setup a deployment test group and verify it is successful there first!

## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Virus and Malware Prevention Tips
Source: https://nmbgeek.com/blog/virus-and-malware-prevention-tips/
Summary: Archived malware prevention advice covering software updates, security scans, email links, and fake support calls. Some products are no longer current.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Virus and Malware Prevention Tips
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
November 15, 2017
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

## 1. Update Update Update!
Your operating system (Windows or MacOS for most people), Java, Adobe Flash, and your web browser (Edge, Internet Explorer, Google Chrome, Firefox, etc) are often the ticket for a virus to get onto your computer. Updates often fix security flaws that have been found in your software. Malware authors then reverse engineer these updates and create a virus, ransomware, or advertising software that is able to use your old software to install on your computer without your knowledge. By keeping software updated you are avoiding being a part of the large percentage of people who do not regularly update their software and are targeted by virus writers.
### 2. Install uBlock Origin and Remove Unnecessary Plugins
Often times malware, malicious software for short, comes from advertising on well known websites. An accidental click can lead you to a not so reputable site and the next thing you know your computer has locked up. [uBlock Origin](https://ublockorigin.com/) has a plugin for all major browsers and I highly recommend its use whenever you browse the internet. Also you want to remove other unecessary plugins. Espescially shopping and coupon plugins that create advertisements in websites that you are visiting. You can remove these plugins or extensions by going into your web browsers settings.
### 3. Scan Regularly
All reputable antivirus programs have a scheduled scan feature and some can even be set to scan when the computer is not in use. I recommend at least weekly scans setup. Running a deep scan every few weeks is also highly recommended. Also make sure your antivirus is from a reputable company.
### 4. Be Skeptical of Every Email
Social engineering is also something to be wary of. Phishers use emails that look like they are from your bank, insurance company, social media, and other sites to try and get your information. Occasionally these will be the source of a virus however they can pose an even larger risk to your finances and privacy.
### 5. Other Tactics
Microsoft will not call you and tell you that you have a virus! These fake tech support companies will call telling you there is a problem with your computer and this is nothing more than a scam! I hear it every day! Unless you are under warranty and YOU call your manufacturer I highly recommend using someone local. Compare prices and reviews and make an informed decision on who repairs your computer, tablet, or phone!
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
---
## Page: Serve Webp Images and Create an Efficient Cache Policy for Runcloud’s nginx-rc
Source: https://nmbgeek.com/blog/webp-and-cache-runcloud-nginx/
Summary: Serve WebP images and set a one year cache policy in RunCloud's nginx-rc, with the config block and a way to verify the response headers.
[Home](https://nmbgeek.com/) / [CTS blog](https://nmbgeek.com/blog/)
From the CTS blog
# Serve Webp Images and Create an Efficient Cache Policy for Runcloud’s nginx-rc
By [Clint Johnson](https://nmbgeek.com/about/#clint-johnson)
December 4, 2019
**Archived article:** Products and instructions may have changed since this was written. Check the publication date before following the steps. Comments are closed.

## Why RunCloud?
Runcloud makes server management simple and deploying of new webapps a breeze. WordPress and many other platforms are supported along with Github for code management. If you are not using [RunCloud](https://runcloud.io/) then the nginx configuration below will have to be added to your NGINX config block.
### How do I serve WEBP images?
I use img-optimize by VirtuBox to optimize my JPG and PNG files and also create a highly optimized WEBP version. img-optimize can be found at [https://virtubox.github.io/img-optimize/](https://virtubox.github.io/img-optimize/). The first file we create is webp.conf which serves as a helper to allow the second Nginx configuration file and its use of the variable $webp_suffix. The second configuration file will follow the naming format of **webappname**.location.main.extra.conf This second file must be replicated for each webapp (website) that we want to actually serve webp files (and cache content). The first 6 lines of **webappname**.location.main.extra.conf attempt to serve the WEBP file instead of JPG or PNG if the file exists and the user’s web browser supports it. **RunCloud’s NGINX now supports WEBP by default, we just need to tell it to try the webp file before trying the jpg/jpeg/png files.**
The remaining portion of **webappname**.location.main-before.extra.conf will increase the expiration time of cached static content to 1 year. It is currently written to include media files, font files, javascript, css, and much more. Javascript and CSS are in their own section and can be modified for more or less time if needed. This helps your visitor’s browser to know that it is okay to cache this content which reduces bandwidth consumption and helps to better their on site experience. It also helps boot GTMetrix and PageSpeed scores which have a large effect on SEO rankings. Files that should not be cached long such as your RSS or Atom feed are stored for 1 hour while manifest, appcache, html, xml, and json files will not be cached.
### How can I see a WEBP being served and check my cache policy?
You can see from these response headers below that a PNG file was requested however a WEBP file was served. You will also see that it has an expires date of 1 Year from the request date. I am also directly serving WEBP files now so this hopefully only acts as a fall back for this site’s WEBP images. If you inspect my headers on this page which you can do by pressing F12 in Chrome or Firefox and selecting the Network tab and refreshing the page you will likely see a direct WEBP request. This is done through a third party plugin however while it rebuilds my site’s static cache this script acts as a fallback to make sure I am always serving WEBP images. If you are looking for the ultimate and easiest WordPress Optimization and Caching solution I highly suggest [Swift Performance](https://swiftperformance.io/product/swift-performance/?ref=247).

## WARNING: Before running any scripts on your server or making modifications please make sure you understand what the script is doing!
First read up on RunCloud’s Nginx Cheat Sheet here to understand why we are going to be creating the file **webappname**.location.main.extra.conf and where that is actually used in your webapp’s Nginx configuration: [https://runcloud.io/docs/guide/cheat-sheet/nginx](https://runcloud.io/docs/guide/cheat-sheet/nginx)
Basically RunCloud uses a modified version of Nginx and you do not want to modify the primary Nginx conf[i](https://swiftperformance.io/product/swift-performance/?ref=247)guration files as they may be overwritten with updates or rebuilding of your web application. To make up for that you can place additional Nginx site configuration files in the extra.d folder located at /etc/nginx-rc/extra.d/ We will be using the name format **webappname**.location.main-before.*.conf because it is pulled into the main area of the Web App’s Nginx config file.
### Modify Nginx Configuration for RunCloud to serve WEBP
First we want to add WEBP support to our main Nginx configuration. This should be enabled by default now.
```
sudo echo -e 'map $http_accept $webp_suffix {default "";\n "~*webp" ".webp";\n}' > /etc/nginx-rc/conf.d/webp.conf
```
This creates the file /etc/nginx-rc/conf.d/webp.conf with this content:
```
map $http_accept $webp_suffix { default ""; "~*webp" ".webp"; }
```
### Modify our RunCloud Web Apps for WEBP and Cache
Now we can setup our configuration for each Web App independently to serve the WEBP files and cache content in the users browser. Essentially this file would be replicated for each site you wish to apply these optimizations. We will name our Web App’s config file: **webappname**.location.main.extra.conf To create the file use this command with WEBAPPNAME replaced with the Web App name you used when creating your site in RunCloud’s control panel.
**Do this from your web applications configuration in the Runcloud control panel to guarantee it sticks between rebuilds and is formatted correctly.**
**Under “NGINX Config” select the ‘location.main-before’ and I name mine ‘webp’**
```
#Serve Webp (Comment this out if you are using CloudFlare Polish and you also don't need to worry about converting to webp!)
location ~* \.(png|jpe?g)$ {
expires 1y;
add_header Vary Accept;
try_files $uri$webp_suffix $uri =404;
}
# Expire rules for static content
# cache.appcache, your document html and data
location ~* \.(?:manifest|appcache|html?|json)$ {
expires -1;
}
# Feed
location ~* \.(?:rss|atom)$ {
expires 1h;
add_header Cache-Control "public";
}
# Media: images, icons, video, audio, HTC
location ~*.(ico|css|gif|jpe?g|png|gz|zip|flv|rar|wmv|avi|css|js|swf|png|htc|mpeg|mpg|txt|otf|ttf|eot|woff|woff2|svg|webp|avif)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
```
## Categories
[All](https://nmbgeek.com/blog/category/blog/)
## Tags
[caching](https://nmbgeek.com/blog/tag/caching/)
[nginx](https://nmbgeek.com/blog/tag/nginx/)
[RunCloud](https://nmbgeek.com/blog/tag/runcloud/)
[scripts](https://nmbgeek.com/blog/tag/scripts/)
[tutorial](https://nmbgeek.com/blog/tag/tutorial/)
[web hosting](https://nmbgeek.com/blog/tag/web-hosting/)
[webp](https://nmbgeek.com/blog/tag/webp/)
---