Getting Ollama Running on Windows — What the Docs Don’t Tell You

MAI_449d689c465d19ba

I am launching into a new project to implement Ai ‘on premises’. The two major reasons for this are:

A. As the frontier cloud models become more expensive and small models become better I foresee much more demand to have AI solutions on premises

and

B. I want a local AI to integrate with mt IoT projects.

In the long run I will probably use Azure AI Foundry Local, however, this is going to require new hardware. Wanting to avoid that initially and get up to speed with other cheaper options I going to start with Ollama.

What Ollama Does

Think of Ollama as a model manager and runtime. It:

  • Downloads AI models to your PC

  • Runs them locally

  • Provides a simple command-line interface

  • Exposes a local API that applications can connect to

  • Manages model updates and storage


Prerequisites: More Than “Windows 10 or Later”

The official download page says Windows 10 or later. That’s technically correct and practically incomplete.

Your OS needs to be Windows 10 22H2 or newer — older builds turn progress indicators into rows of blank squares in the terminal. For NVIDIA cards, driver 531 or newer is required. Cards from the GTX 900 or 1000 era (compute capability 5.0–6.2) need driver 570 specifically — confirm your card’s compute level at nvidia.com/cuda-gpus before assuming you’re covered.

AMD is where people get caught. On Windows, Ollama supports Radeon RX 6000 and 7000 series only, via the ROCm v7 driver stack. If your card isn’t in that range, Ollama will silently fall back to CPU — no warning, no error. Check the supported hardware list before committing to the setup.

RAM: 16 GB is a working floor for 7B models; plan for 32 GB if you want breathing room. Storage tends to catch people off guard — the binary install is roughly 4 GB, but models range from 4 GB for smaller ones to well over 20 GB in the 14B range. NVMe for model storage is worth it. The installer runs under your user account — no admin rights needed.

Install Checklist

  1. Download OllamaSetup.exe from ollama.com and run it. Approve the Windows Defender prompt.
    (Personally, I’d use Winget via – winget install –id Ollama.Ollama –e)

  2. Open PowerShell and run ollama --version — confirm it’s on your PATH.

  3. Check the service is running: curl http://localhost:11434/api/tags should return JSON.

  4. Pull a starting model: ollama pull llama3.2
  5. Run it: ollama run llama3.2
  6. Open a second terminal and run ollama ps. Check the PROCESSOR column.

That last step matters more than the rest combined.

Gotchas Worth Knowing

The silent CPU fallback is the one that costs the most time. Ollama will run on CPU if it can’t access your GPU — no error, just responses ten to fifteen times slower than they should be. ollama ps shows what’s actually handling inference. Adding --verbose to your run command surfaces device information at startup as well.

Model storage defaults to your home directory. On a machine with a small system drive, this bites quickly. Set the OLLAMA_MODELS environment variable in your user account settings before pulling any models. The catch: if Ollama is already running as a background service, setting the variable in your current terminal won’t reach it — the service has the old environment. Quit from the system tray, save the variable, then relaunch.

When something breaks, start with the logs. Ollama writes to %LOCALAPPDATA%\Ollama\server.log — it’s significantly more informative than anything that surfaces on screen.

The Bigger Picture

I’ll soon share my various builds with local AI here.

X-Wing with Snapmaker U1

Screenshot 2026-01-24 100857

After getting my new Snapmaker U1 and printing my first item I was looking for another project to print and found this:

https://galacticarmory.net/collections/3d-files/products/x-wing-vehicle-kit-card-3d-print-files

a cool Star Wars X-Wing fighter. You can see the result above.

The model was great but when I pulled it into the Snapmaker Orca slicer it wasn’t set up with the right colours. This meant that my first attempt was all in white. Once I had worked out the colour mapping I ended up with the desired result but I am still not happy with the process and need to spend more time with the Snapmaker Orca slicer to understand how it work and to make remapping colours easier.

However, I am super happy with the result and am now looking for my next project.

Using Azure AI on a web cam image

blog1

So far I’ve connected an Arducam 3MP camera to an ESP32 controller and uploaded regular photos to Azure and displayed them on a web page. Those details are here:

https://blog.ciaopslabs.com/2026/01/18/arducam-as-a-live-web-cam/

Now what I want to do is feed those images into Azure AI and display the results back on a web page.

The first step in this process will be to create a Computer Vision Service in Azure.

  1. In Azure Portal, click “+ Create a resource” (top left)
  2. Search for Computer Vision
    • Type: “Computer Vision”
    • Click on “Computer Vision” (with the eye icon)
    • Make sure it says “Computer Vision” not “Azure AI services”
    • Click “Create”
  3. Configure the Resource
    • Subscription: Your Azure subscription
    • Resource Group: Select “image-analysis-rg” (the one you created earlier)
    • Region: CRITICAL – Must be one of these:
      • East US
      • West US
      • France Central
      • North Europe
      • West Europe
      • Southeast Asia
      • East Asia
      • Korea Central
        Choose East US if unsure (best compatibility with Vision Studio)
    • Name: Give it a unique name
      • Example: “my-vision-service-2026”
      • Lowercase, numbers, hyphens only
    • Pricing tier: “Free F0”
      • Gives you 5,000 API calls per month
      • 20 calls per minute
      • Completely FREE!
  4. Create the Resource
    • Check the “Responsible AI Notice” checkbox
    • Click “Review + create”
    • Click “Create”
    • Wait 1-2 minutes
    • Click “Go to resource”

With this create you now need to get yoru API credentials for the AI service.

  1. In your Computer Vision resource, look at the left menu
  2. Click “Keys and Endpoint” (under “Resource Management”)
  3. Copy Your Credentials
    • Click “Show Keys”
    • Click the copy icon next to KEY 1
    • Paste into Notepad and label it: API Key: [your-key]
  4. Copy Your Endpoint

Keep these values safe – you’ll need them in the next step!

Next, you’ll need to create a HTML webpage to connect and display the results. You’ll find that here:

https://github.com/directorcia/Azure/blob/master/Iot/Arducam/3MP/vision-index.html

Make sure you update these values in yoru file to match your service:

const VISION_ENDPOINT = ‘https://<YOUR VISION SERVICE NAME>.cognitiveservices.azure.com/’;

const VISION_KEY = ‘<YOUR VISION SERVICE KEY>’;

const IMAGE_URL = ‘<YOUR BLOB STORAGE ACCOUNT>.blob.core.windows.net/images/latest.jpg’;

Note: this is not a secure way to implement the service if you are going to expose the page to the Internet. This should therefore be addressed if you plan to make the page public.

Once you have the new HTML file upload it to the $web container of your Blob storage account via:

  1. Go back to Azure Portal
  2. Navigate to your Storage Account
    • Search for your storage account name in the top search bar
    • Click on it
  3. Open Storage Browser
    • In the left menu, click “Storage browser”
    • Expand “Blob containers”
    • Click on “$web” (this is the special container for static websites)
  4. Upload your HTML file
    • Click “Upload” button at the top
    • Click “Browse for files”
    • Select your “index.html” file
    • Important: Check the box “Overwrite if files already exist”
    • Click “Upload”
    • Wait for upload to complete (shows green checkmark)

Now you should be able to view the website by:

  1. Open your browser
  2. Go to your website URL (from Step 2)
  3. What you should see:
    • Your image displayed
    • “Analyzing image…” message appears
    • After 2-3 seconds:
      • AI-generated caption (e.g., “a person standing on a beach”)
      • Confidence score (e.g., “Confidence: 87.5%”)
      • Tags with percentages (e.g., “outdoor 99%”, “beach 95%”)
    • Australian date/time format timestamp
    • Every 60 seconds, the image auto-refreshes

Screenshot 2026-01-18 121901

Troubleshooting Common Issues

Issue 1: “Access Denied” or 401 Error

Cause: API key is incorrect or endpoint is wrong

Solution:

  1. Go back to Azure Portal
  2. Navigate to your Computer Vision resource
  3. Click “Keys and Endpoint”
  4. Click “Show Keys”
  5. Verify you copied KEY 1 correctly (no extra spaces)
  6. Check the endpoint URL matches exactly
  7. Re-edit your index.html file with correct values
  8. Re-upload to $web container

Issue 2: Image Doesn’t Show

Cause: Image URL is wrong or image container is not public

Solution:

  1. Go to Storage Account → Containers → “images”
  2. Click on your image file
  3. Copy the URL and verify it’s correct in your HTML
  4. Click on the “images” container name
  5. Click “Change access level”
  6. Select “Blob (anonymous read access for blobs only)”
  7. Click OK

Issue 3: CORS Error in Browser Console

Cause: Cross-Origin Resource Sharing not configured

Solution:

  1. Go to your Computer Vision resource
  2. Find “CORS” in the left menu (under API or Settings)
  3. Add a new allowed origin:
  4. Click Save
  5. Refresh your webpage

Issue 4: “Analysis never completes” or Stuck on “Analyzing…”

Cause: Usually a JavaScript error or network issue

Solution:

  1. Press F12 to open browser Developer Tools
  2. Click “Console” tab
  3. Look for red error messages
  4. Common fixes:
    • Check all three values (ENDPOINT, KEY, IMAGE_URL) are correct
    • Ensure no typos in the JavaScript section
    • Try a different browser
  5. Verify your Computer Vision resource is in a supported region (see Step 4)

Issue 5: Wrong Region Error

Cause: Computer Vision resource created in unsupported region

Solution:

  1. Delete the Computer Vision resource
  2. Create a new one in a supported region:
    • East US, West US, France Central, North Europe, West Europe, Southeast Asia, East Asia, or Korea Central
  3. Get the new KEY and ENDPOINT
  4. Update your HTML file
  5. Re-upload

Understanding Costs (Important!)

Free Tier Limits

  • Computer Vision F0: 5,000 API calls per month – FREE
  • Storage Account: First 5GB storage – FREE
  • Bandwidth: First 15GB outbound – FREE

How This Setup Saves Money

Image Refresh: Happens every 60 seconds (FREE – just downloading an image)

AI Analysis: Only happens:

  • When you first load the page (1 call)
  • When you manually refresh your browser (1 call per refresh)

NOT when: The image auto-refreshes every 60 seconds

Example Usage:

  • You check the page 5 times per day = 5 API calls/day
  • Over 30 days = 150 API calls/month
  • Well within 5,000 free limit!

This optimized version:

  • Stays FREE even if left open 24/7 ✅

The next step will be attempt to have the Ai count and display the number of vehicles it sees in each shot.

Arducam as a live web cam

blog1

I recently managed to Send images from Arducam to Azure, which was a major win. Only challenge with that is it isn’t easy to see those images inside Azure. Thus, I wanted an easy way to do this and figured that displaying on a web page was the go.

Turns out, this isn’t to hard using Azure. Thus, I started by modifying the code for the controller so it would always upload an image using the same name and do so every 60 seconds. You can find the code for the controller here:

https://github.com/directorcia/Azure/blob/master/Iot/Arducam/3MP/storage-web.cpp

and documentation here:

https://github.com/directorcia/Azure/blob/master/Iot/Arducam/3MP/storage-web.md

Next, I created an index.html file to display the image from Azure Blob storage. You can find a copy of that here:

https://github.com/directorcia/Azure/blob/master/Iot/Arducam/3MP/web-index.html

you need to rename it to index.html and put the name of your Blob storage URL on line 40.

Next, you’ll need to enable a static website on your Blob storage account.

image

  1. Go to Azure Portal (portal.azure.com)
  2. Navigate to your storage account: arducamimages
  3. In the left menu, find “Static website” (under “Data management” or “Settings”)
  4. Click “Enabled”
  5. Set Index document name: index.html
  6. Note the Primary endpoint URL (e.g., https://arducamimages.z88.web.core.windows.net/)
  7. Click “Save”

image

Then you’ll need to upload your index.html to the $web container in your Blob storage account.

  1. In your storage account, click “Containers” (under “Data storage”)
  2. Click on the $web container (created automatically when you enabled static website)
  3. Click “Upload”
  4. Select your index.html file
  5. Check “Overwrite if files already exist”
  6. Click “Upload”

image

Now you’ll need to set public access for $web container.

  1. While in the $web container, click “Change access level”
  2. Set “Public access level” to “Blob (anonymous read access for blobs only)”
  3. Click “OK”

image

Next, set public access for images container

  1. Go back to “Containers”
  2. Click on the “images” container (where your latest.jpg is stored)
  3. Click “Change access level”
  4. Set “Public access level” to “Blob (anonymous read access for blobs only)”
  5. Click “OK”

image

You should be able to view the website using the Primary endpoint, that was back in the Static website settings as shown above. In my case I also need to add /index.html to end of the URL to get it to display.

image

You can see my result above. The page should refresh every 60 seconds automatically with a new image. You should also be able to now view this image from anywhere by simply browsing to your URL.

My next plan is to try and integrate Azure AI vision, given the image is already now in Azure, and for the page to report the weather i.e. sunny, wet, etc. yes, I know you can see that in the image but that makes it an easy way to very that Ai reading the image correctly. Let’s see how hard that is to do next.

I have my Snapmaker U1

blog

My new Snapmaker U1 recently arrived. This allows multi colour printing of up to 4 different colours at once. You can see the test figure i was able to make.

The printer is high quality and easy to assemble.

image

Device Calibration (1/3)

Homing Anomaly

Error Code: 0002-0528-0000-0011

Check if timing belts are tensioned properly, X

and Y axes move smoothly, and there are no

obstructions at the X and Y homing positions.

Retry after troubleshooting. If issue persists,

contact technical support.

I did get the above error when initially setting it up but the following help article:

https://wiki.snapmaker.com/en/snapmaker_u1/troubleshooting/U1_homing_failure

helped. I basically loosened the print head, moved it through its range or travels a few times, tightened teh screws back up a little less tightly and it all worked.

There are plenty of review out there on YouTube if you want to go and take a look but so far everything I have printed has worked flawlessly and I am very happy. Given that the printer has an open top, where an eventual cover that I have also bought, it is louder than I expected. The cover should solve the problem when it arrive but it is nothing I can’t deal with in the mean time.

So far so good then with the U1 and I’ll report back my progress as I grow mor familiar.