---
layout: default
title: Downloads
permalink: /downloads
excerpt: CircuitPython supported boards.
---
Downloads
{% comment %}
Get a total number of boards by running through both loops
to get an accurate total.
{% endcomment %}
{% assign board_count = 0 %}
{% assign boards = site.data.files %}
{% for board in boards %}
{% assign info = site.board | where: 'board_id', board.id %}
{% if info.size == 0 %}
{% assign info = site.board | where: 'board_id', 'unknown' %}
{% endif %}
{% assign info = info[0] %}
{% if info.downloads_display == false %}
{% continue %}
{% endif %}
{% assign board_count = board_count | plus: 1 %}
{% endfor %}
{% for board in site.board %}
{% assign info = site.data.files | where: 'id', board.board_id | first %}
{% if info == nil and board.board_id != 'unknown' %}
{% if board.downloads_display == false %}
{% continue %}
{% endif %}
{% assign board_count = board_count | plus: 1 %}
{% endif %}
{% endfor %}
Displaying {{ board_count }} boards.
{% comment %}
The following are boards that are in the _data/files.json build
process. Separate loops due to wanting to sort by download count first.
{% endcomment %}
{% assign boards = site.data.files | sort: "downloads" | reverse %}
{% for board in boards %}
{% assign info = site.board | where: 'board_id', board.id %}
{% assign info_name = info[0].name %}
{% if info.size == 0 %}
{% assign info = site.board | where: 'board_id', 'unknown' %}
{% assign info_name = board.id %}
{% endif %}
{% assign info = info[0] %}
{% assign stable = board.versions | where: "stable", true | sort: "version" %}
{% assign unstable = board.versions | where: "stable", false | sort: "version" %}
{% if stable[0].modules and unstable[0].modules %}
{% assign modules = stable[0].modules | concat: unstable[0].modules | uniq %}
{% elsif stable[0].modules %}
{% assign modules = stable[0].modules %}
{% elsif unstable[0].modules %}
{% assign modules = unstable[0].modules %}
{% else %}
{% assign modules = '' | split: '' %}
{% endif %}
{% if info.downloads_display == false %}
{% continue %}
{% endif %}
{% if info.board_id != 'unknown' %}
{% assign download_url = info.url %}
{% else %}
{% capture download_url %}{{ info.url }}?unknown_id={{ board.id }}{% endcapture %}
{% endif %}
{% endfor %}
{% comment %}
The following are boards that are not yet in the _data/files.json build
process and have no downloads.
{% endcomment %}
{% for board in site.board %}
{% assign info = site.data.files | where: 'id', board.board_id | first %}
{% if info == nil and board.board_id != 'unknown' %}
{% if board.downloads_display == false %}
{% continue %}
{% endif %}
{% endif %}
{% endfor %}