Today I created the custom book casings for my upcoming book “Swim Training Patterns“. Getting the settings for the laser cutter right was pretty difficult. You want clear marks on the cardboard, but you don’t want to burn all the way through. A fun little project for my upcoming Taveling Book Project.
Pre-Order now open
The pre-order of my upcoming book “Swim Training Patterns” is now open. You can use the discount code “swiml” to get 20% off from your order.
To celebrate this milestone, I start a new video series that shows you how to use swiML to create training programs. Here is the first episode:
Swim Training Patterns Work Out
I have spent far too much time in the pool training for the 2025 New Zealand Masters Swimming National Competition that took place last weekend in Auckland. I varied my training using Swim Training Patterns. They kept from going insane by swimming up and down the lanes.
All that training worked out rather well. I managed to win the gold medal in my age group for both abled and para swimmers. It is likely the first time a para swimmer has also won the able-bodied swimming competition, but I might be wrong on this. The results and times are available.
Trump’s Tariffs Maths
Liberation Day was a monumental day for exposing the mathematical skills of the Trump administration. Matt Parker and others already made videos that explain the ludicrous maths. I would like to go a step further and try to work out the last bits of ambiguity of what the Trump administration actually did with the numbers.
They showed a complicated formula:
$$\Delta \tau_i=\frac{x_i-m_i}{\epsilon*\varphi *m_i}$$
This formula is clearly Mathiness, an approach to make their calculations look more complex and trustworthy than they really are. The actual calculation comes down to:
$$t=\frac{\text{exports-imports}}{\text{imports}}$$
We now have the starting point for calculating the tariffs (t). We only need imports and exports per country. The US Census provides this information, and you can download its data. Trump only posted the poster boards with some numbers, but the Guardian published the full list. I downloaded the list from here, but it contained an error for Reunion.
We now have to make some slight modifications since imports and exports can be considered from the perspective of the USA or the foreign country. Moreover, we need to have the deficit expressed as a positive percentage number. So for the data from the US Census, this comes to:
$$t=\frac{\text{exports-imports}}{\text{imports}} \times -100$$
There are a few more rules we have to consider:
- All trade surpluses are ignored, resulting in a default of 10%.
- The reciprocal tariff is set to the rounded half of the trade deficit percentage, but no lower than 10%.
- If the trade deficit percentage is an uneven number, then one is added before it is halved.
This results in the following table that you can also download as a CSV file. There are a couple of odd choices that I still cannot explain. For this purpose I calculated the deltaTarif column to show the difference between my calculations and the official data.
Afghanistan, for example, has a trade deficit of 49%. This should result in a reciprocal tarif of 25%, but they only get 10%. Some countries are off by one, such as Vietnam. They should have 45% but got 46%. Same problem with Japan (24% vs 23%).
Lying in the chart of what the numbers mean and then presenting a misleading formula is just terrible. If you want to be evil, be at least good at it.
Country | New US tariffs | Tariffs charged to the USA | IYR | EYR | deficitFraction | calcTariff | deltaTariff |
---|---|---|---|---|---|---|---|
Afghanistan | 10 | 49 | 22.588359 | 11.446788 | 49.32439315 | 49 | -15 |
Albania | 10 | 10 | 128.280409 | 141.727893 | -10.48288207 | 10 | 0 |
Algeria | 30 | 59 | 2461.611142 | 1014.504109 | 58.78698745 | 59 | 0 |
Andorra | 10 | 10 | 3.369249 | 4.911141 | -45.76367018 | 10 | 0 |
Angola | 32 | 63 | 1869.239166 | 682.352869 | 63.49568951 | 63 | 0 |
Anguilla | 10 | 10 | 1.190598 | 72.488329 | -5988.396671 | 10 | 0 |
Antigua and Barbuda | 10 | 10 | 23.75155 | 573.765998 | -2315.699178 | 10 | 0 |
Argentina | 10 | 10 | 7092.161169 | 9170.997286 | -29.31174387 | 10 | 0 |
Armenia | 10 | 10 | 121.583116 | 160.78363 | -32.24174153 | 10 | 0 |
Aruba | 10 | 10 | 10.704668 | 725.539495 | -6677.786056 | 10 | 0 |
Australia | 10 | 10 | 16685.50984 | 34593.34854 | -107.3256908 | 10 | 0 |
Azerbaijan | 10 | 10 | 157.776472 | 255.07449 | -61.66826826 | 10 | 0 |
Bahamas | 10 | 10 | 1792.373019 | 5639.742401 | -214.6522705 | 10 | 0 |
Bahrain | 10 | 10 | 1204.340922 | 1646.230202 | -36.69137799 | 10 | 0 |
Bangladesh | 37 | 74 | 8365.766327 | 2213.964142 | 73.53542933 | 74 | 0 |
Barbados | 10 | 10 | 48.564639 | 772.603153 | -1490.875931 | 10 | 0 |
Belize | 10 | 10 | 81.128498 | 590.448355 | -627.7940176 | 10 | 0 |
Benin | 10 | 10 | 48.623404 | 216.446069 | -345.1479148 | 10 | 0 |
Bermuda | 10 | 10 | 23.328268 | 540.382525 | -2216.427971 | 10 | 0 |
Bhutan | 10 | 10 | 3.281048 | 3.427734 | -4.470705701 | 10 | 0 |
Bolivia | 10 | 20 | 504.146695 | 401.036421 | 20.45243478 | 20 | 0 |
Bosnia and Herzegovina | 35 | 70 | 179.089584 | 52.988456 | 70.41231834 | 70 | 0 |
Botswana | 37 | 74 | 405.123674 | 104.327456 | 74.24799816 | 74 | 0 |
Brazil | 10 | 10 | 42316.32362 | 49666.97632 | -17.37072617 | 10 | 0 |
British Virgin Islands | 10 | 10 | 60.246807 | 312.909554 | -419.3794818 | 10 | 0 |
Brunei | 24 | 47 | 238.849306 | 127.213271 | 46.73910796 | 47 | 0 |
Burundi | 10 | 10 | 3.736684 | 6.61399 | -77.0015875 | 10 | 0 |
Cabo Verde | 10 | 10 | 4.482999 | 12.246976 | -173.1871232 | 10 | 0 |
Cambodia | 49 | 97 | 12661.80682 | 321.629583 | 97.45984449 | 97 | 0 |
Cameroon | 11 | 22 | 248.80528 | 193.064344 | 22.40343774 | 22 | 0 |
Cayman Islands | 10 | 10 | 49.39955 | 1286.490024 | -2504.254541 | 10 | 0 |
Central African Republic | 10 | 10 | 1.422027 | 35.070359 | -2366.223145 | 10 | 0 |
Chad | 13 | 26 | 80.814038 | 59.939855 | 25.82989728 | 26 | 0 |
Chile | 10 | 10 | 16469.47996 | 18167.7934 | -10.31188262 | 10 | 0 |
China | 34 | 67 | 438947.3861 | 143545.7395 | 67.29773453 | 67 | 0 |
Christmas Island | 10 | 10 | 1.747242 | 2.11479 | -21.03589543 | 10 | 0 |
Cocos (Keeling) Islands | 10 | 10 | 1.100644 | 2.58047 | -134.4509215 | 10 | 0 |
Colombia | 10 | 10 | 17690.34896 | 19037.61341 | -7.615816097 | 10 | 0 |
Comoros | 10 | 10 | 1.848391 | 4.738928 | -156.3812527 | 10 | 0 |
Cook Islands | 10 | 10 | 0.892119 | 6.861175 | -669.08742 | 10 | 0 |
Costa Rica | 10 | 17 | 11634.90533 | 9676.788152 | 16.82967866 | 10 | 0 |
Djibouti | 10 | 10 | 40.11125 | 144.982858 | -261.451857 | 10 | 0 |
Dominica | 10 | 10 | 2.306195 | 58.79899 | -2449.610506 | 10 | 0 |
Dominican Republic | 10 | 10 | 7505.430838 | 13081.66107 | -74.29593789 | 10 | 0 |
Ecuador | 10 | 12 | 8524.306263 | 7531.653753 | 11.64496534 | 10 | 0 |
Egypt | 10 | 10 | 2546.000141 | 6092.022475 | -139.2781672 | 10 | 0 |
El Salvador | 10 | 10 | 2311.212791 | 4556.353458 | -97.14123579 | 10 | 0 |
Equatorial Guinea | 13 | 25 | 127.640788 | 95.379691 | 25.27491212 | 25 | 0 |
Eritrea | 10 | 10 | 0.852918 | 37.475441 | -4293.791783 | 10 | 0 |
Eswatini | 10 | 10 | 22.588609 | 46.113517 | -104.1450051 | 10 | 0 |
Ethiopia | 10 | 10 | 465.844335 | 1017.706562 | -118.4649432 | 10 | 0 |
European Union | 20 | 39 | 605760.3933 | 370189.2304 | 38.88850535 | 39 | 0 |
Fiji | 32 | 63 | 259.272473 | 94.679571 | 63.48259809 | 63 | 0 |
French Guiana | 10 | 10 | 1.821129 | 28.999681 | -1492.401252 | 10 | 0 |
French Polynesia | 10 | 10 | 40.42327 | 145.19757 | -259.1930341 | 10 | 0 |
Gabon | 10 | 10 | 171.666854 | 171.065105 | 0.350533016 | 10 | 0 |
Gambia | 10 | 10 | 1.969897 | 80.563522 | -3989.732712 | 10 | 0 |
Georgia | 10 | 10 | 165.414171 | 1736.461692 | -949.7659792 | 10 | 0 |
Ghana | 10 | 17 | 1171.728486 | 967.304543 | 17.44635771 | 10 | 0 |
Gibraltar | 10 | 10 | 0.431179 | 650.596519 | -150787.8027 | 10 | 0 |
Grenada | 10 | 10 | 14.074818 | 165.335817 | -1074.692397 | 10 | 0 |
Guadeloupe | 10 | 10 | 3.427661 | 470.637794 | -13630.5817 | 10 | 0 |
Guatemala | 10 | 10 | 5019.892412 | 9714.801951 | -93.52609884 | 10 | 0 |
Guinea | 10 | 10 | 6.179835 | 138.336186 | -2138.509378 | 10 | 0 |
Guinea-Bissau | 10 | 10 | 0.122848 | 3.394912 | -2663.506121 | 10 | 0 |
Guyana | 38 | 76 | 5375.48866 | 1314.93053 | 75.53840008 | 76 | 0 |
Haiti | 10 | 10 | 616.770785 | 1214.423999 | -96.90037669 | 10 | 0 |
Heard and McDonald Islands | 10 | 10 | 0.013589 | 0.058879 | -333.284274 | 10 | 0 |
Honduras | 10 | 10 | 5532.561721 | 7057.473677 | -27.56249334 | 10 | 0 |
Iceland | 10 | 10 | 1072.626837 | 985.844921 | 8.090597122 | 10 | 0 |
India | 26 | 52 | 87416.44858 | 41752.66797 | 52.23705762 | 52 | 0 |
Indonesia | 32 | 64 | 28084.73788 | 10202.09572 | 63.67387952 | 64 | 0 |
Iran | 10 | 10 | 6.218491 | 90.84743 | -1360.924041 | 10 | 0 |
Iraq | 39 | 78 | 7422.275381 | 1660.554212 | 77.62742385 | 78 | 0 |
Israel | 17 | 33 | 22217.48485 | 14792.03496 | 33.42164939 | 33 | 0 |
Jamaica | 10 | 10 | 361.372579 | 2644.127532 | -631.6901408 | 10 | 0 |
Japan | 24 | 46 | 148208.5666 | 79740.84555 | 46.1968715 | 46 | 1 |
Jordan | 20 | 40 | 3364.877293 | 2030.78495 | 39.64757781 | 40 | 0 |
Kazakhstan | 27 | 54 | 2330.74942 | 1077.097171 | 53.78751736 | 54 | 0 |
Kenya | 10 | 10 | 737.305128 | 782.524079 | -6.13300373 | 10 | 0 |
Kiribati | 10 | 10 | 0.808162 | 4.220009 | -422.1736484 | 10 | 0 |
Kosovo | 10 | 10 | 34.015946 | 49.388369 | -45.19181386 | 10 | 0 |
Kuwait | 10 | 10 | 1643.60575 | 2411.831329 | -46.74025867 | 10 | 0 |
Kyrgyzstan | 10 | 10 | 16.66837 | 133.144912 | -698.7878359 | 10 | 0 |
Laos | 48 | 95 | 803.320155 | 40.385293 | 94.97270263 | 95 | 0 |
Lebanon | 10 | 10 | 257.571987 | 541.421719 | -110.2020974 | 10 | 0 |
Lesotho | 50 | 99 | 237.257685 | 2.794513 | 98.82216123 | 99 | 0 |
Liberia | 10 | 10 | 72.529569 | 220.400195 | -203.8763335 | 10 | 0 |
Libya | 31 | 61 | 1465.562558 | 567.220437 | 61.29674343 | 61 | 0 |
Liechtenstein | 37 | 73 | 243.72052 | 66.04089 | 72.90302433 | 73 | 0 |
Madagascar | 47 | 93 | 733.215493 | 53.407211 | 92.71602803 | 93 | 0 |
Malawi | 17 | 34 | 41.05461 | 26.940731 | 34.3783049 | 34 | 0 |
Malaysia | 24 | 47 | 52534.84796 | 27704.75083 | 47.26405062 | 47 | 0 |
Maldives | 10 | 10 | 4.765289 | 92.612024 | -1843.471298 | 10 | 0 |
Mali | 10 | 10 | 5.500278 | 51.496789 | -836.257931 | 10 | 0 |
Marshall Islands | 10 | 10 | 20.448963 | 127.426248 | -523.1428361 | 10 | 0 |
Martinique | 10 | 10 | 2.807758 | 199.161662 | -6993.263095 | 10 | 0 |
Mauritania | 10 | 10 | 2.854898 | 139.755555 | -4795.290655 | 10 | 0 |
Mauritius | 40 | 80 | 234.519911 | 47.99104 | 79.53647526 | 80 | 0 |
Mayotte | 10 | 10 | 1.88971 | 1.817609 | 3.815453165 | 10 | 0 |
Micronesia | 10 | 10 | 2.44009 | 50.489582 | -1969.168842 | 10 | 0 |
Moldova | 31 | 61 | 136.495167 | 53.629683 | 60.7094638 | 61 | 0 |
Monaco | 10 | 10 | 47.589664 | 162.798791 | -242.0885489 | 10 | 0 |
Mongolia | 10 | 10 | 26.97744 | 396.615463 | -1370.174572 | 10 | 0 |
Montenegro | 10 | 10 | 15.382306 | 27.681345 | -79.95575566 | 10 | 0 |
Montserrat | 10 | 10 | 5.631794 | 12.071251 | -114.3411318 | 10 | 0 |
Morocco | 10 | 10 | 1904.884441 | 5268.646115 | -176.5861278 | 10 | 0 |
Mozambique | 16 | 31 | 216.070589 | 149.698447 | 30.71780491 | 31 | 0 |
Namibia | 21 | 42 | 275.225098 | 160.506498 | 41.68173645 | 42 | 0 |
Nauru | 30 | 59 | 2.238924 | 0.916696 | 59.05640388 | 59 | 0 |
Nepal | 10 | 10 | 120.461589 | 120.890203 | -0.355809685 | 10 | 0 |
New Zealand | 10 | 20 | 5617.042562 | 4499.423962 | 19.89692241 | 10 | 0 |
Nicaragua | 18 | 36 | 4622.325539 | 2940.985161 | 36.37433936 | 36 | 0 |
Niger | 10 | 10 | 8.306694 | 43.252222 | -420.6911679 | 10 | 0 |
Nigeria | 14 | 27 | 5699.175959 | 4174.298267 | 26.7561083 | 27 | 0 |
Norfolk Island | 29 | 58 | 0.191165 | 0.080944 | 57.65752099 | 58 | 0 |
Norway | 15 | 30 | 6583.33417 | 4592.039618 | 30.24750834 | 30 | 0 |
Oman | 10 | 10 | 1319.991529 | 1954.270075 | -48.05171337 | 10 | 0 |
Pakistan | 29 | 58 | 5123.65616 | 2135.147106 | 58.32766604 | 58 | 0 |
Panama | 10 | 10 | 555.820472 | 10702.13406 | -1825.465973 | 10 | 0 |
Papua New Guinea | 10 | 15 | 79.150698 | 67.20022 | 15.09838612 | 10 | 0 |
Paraguay | 10 | 10 | 356.152957 | 3158.414426 | -786.8140398 | 10 | 0 |
Peru | 10 | 10 | 9363.192761 | 11223.8033 | -19.87153942 | 10 | 0 |
Philippines | 17 | 34 | 14177.62812 | 9297.313129 | 34.42264776 | 34 | 0 |
Qatar | 10 | 10 | 1834.185727 | 3804.248139 | -107.4080113 | 10 | 0 |
Reunion | 10 | 10 | 44.066856 | 11.883522 | 73.03297063 | 73 | -27 |
Rwanda | 10 | 10 | 30.238416 | 44.757797 | -48.0163412 | 10 | 0 |
Samoa | 10 | 10 | 5.717674 | 54.397476 | -851.3917023 | 10 | 0 |
San Marino | 10 | 10 | 25.233029 | 80.023469 | -217.137784 | 10 | 0 |
Saudi Arabia | 10 | 10 | 12733.72516 | 13177.01009 | -3.481188132 | 10 | 0 |
Senegal | 10 | 10 | 235.125168 | 350.866605 | -49.22545638 | 10 | 0 |
Serbia | 37 | 74 | 814.350544 | 209.85911 | 74.2298803 | 74 | 0 |
Sierra Leone | 10 | 10 | 28.74785 | 119.859059 | -316.9322541 | 10 | 0 |
Singapore | 10 | 10 | 43203.7229 | 46032.64597 | -6.547868746 | 10 | 0 |
Sint Maarten | 10 | 10 | 101.535218 | 753.934338 | -642.5348099 | 10 | 0 |
Solomon Islands | 10 | 10 | 1.345899 | 13.147232 | -876.8364491 | 10 | 0 |
South Africa | 30 | 60 | 14655.78659 | 5818.998932 | 60.29555359 | 60 | 0 |
South Sudan | 10 | 10 | 0.805202 | 59.276702 | -7261.718178 | 10 | 0 |
Sri Lanka | 44 | 88 | 3015.585462 | 368.214575 | 87.78961566 | 88 | 0 |
Sudan | 10 | 10 | 13.133891 | 56.610929 | -331.0293804 | 10 | 0 |
Suriname | 10 | 10 | 90.91341 | 383.542932 | -321.8771818 | 10 | 0 |
Switzerland | 31 | 61 | 63425.3186 | 24961.98692 | 60.64349779 | 61 | 0 |
Syria | 41 | 81 | 10.651468 | 2.020826 | 81.02772313 | 81 | 0 |
Taiwan | 32 | 64 | 116264.0269 | 42336.86142 | 63.58558829 | 64 | 0 |
Tajikistan | 10 | 10 | 4.633938 | 56.83741 | -1126.546622 | 10 | 0 |
Tanzania | 10 | 10 | 204.714855 | 573.380041 | -180.0871686 | 10 | 0 |
Thailand | 36 | 72 | 63328.18022 | 17719.24949 | 72.01996106 | 72 | 0 |
Togo | 10 | 10 | 89.996365 | 283.59244 | -215.1154383 | 10 | 0 |
Tokelau | 10 | 10 | 0.177585 | 0.295764 | -66.54785033 | 10 | 0 |
Tonga | 10 | 10 | 2.845246 | 19.909723 | -599.7540107 | 10 | 0 |
Trinidad and Tobago | 10 | 12 | 3325.877971 | 2939.684738 | 11.61176797 | 10 | 0 |
Tunisia | 28 | 55 | 1123.215612 | 503.588215 | 55.16549008 | 55 | 0 |
Turkey | 10 | 10 | 16745.66406 | 15292.97969 | 8.674988135 | 10 | 0 |
Turkmenistan | 10 | 10 | 14.590585 | 82.234419 | -463.6128983 | 10 | 0 |
Turks and Caicos Islands | 10 | 10 | 10.983629 | 713.57661 | -6396.728995 | 10 | 0 |
Tuvalu | 10 | 10 | 0.224447 | 0.570424 | -154.1464132 | 10 | 0 |
Uganda | 10 | 20 | 132.618139 | 106.29285 | 19.85044369 | 10 | 0 |
Ukraine | 10 | 10 | 1186.498293 | 1683.510839 | -41.88902327 | 10 | 0 |
United Arab Emirates | 10 | 10 | 7474.432624 | 26969.30898 | -260.8208186 | 10 | 0 |
United Kingdom | 10 | 10 | 68084.46833 | 79941.34275 | -17.41494751 | 10 | 0 |
Uruguay | 10 | 10 | 1228.834152 | 1649.000113 | -34.19224314 | 10 | 0 |
Uzbekistan | 10 | 10 | 42.437585 | 380.795484 | -797.3071488 | 10 | 0 |
Vanuatu | 22 | 44 | 13.667021 | 7.601059 | 44.38393707 | 44 | 0 |
Venezuela | 15 | 29 | 5987.862777 | 4232.021935 | 29.32333134 | 29 | 0 |
Vietnam | 46 | 90 | 136561.1558 | 13098.15512 | 90.40857919 | 90 | 1 |
Zambia | 17 | 33 | 169.112021 | 113.762941 | 32.72924046 | 33 | 0 |
Zimbabwe | 18 | 35 | 67.833118 | 43.782746 | 35.45520641 | 35 | 0 |
Introduction to LEGO Train Automation
Many traditional model train sets feature advanced computer-controlled automation. The LEGO company still has to reach this level of sophistication. But we can always rely on dedicated AFOLs to fill the gaps. This post will introduce some of the solutions available in the market. The goal is to find the right combination of hardware and software to achieve your train project. I have been able to control four trains on what continues track without crashes.
Trains
There are many original LEGO trains available, but there are even more interesting ones available from alternative brands/resellers. Just have a look at BlueBrixx’s train section. It comes down to your taste on what exact train model you prefer.
Train controllers
More critical are the train motors and train controllers. After all, you want to control the train(s) remotely. The most popular approach uses Bluetooth to communicate with the train controller. The Powered Up Bluetooth HUB train controller and motor are the obvious choices for this approach. Alternatively, you can use the Technic Hub or the Spike Hub.
But there are other options. You can also use the SBrick Plus to control LEGO Power Functions train motors. You can also use Mindstorms as your controllers. For example, you can use the EV3 with a custom cable. Or you can build your own train motor engine.
Tracks
The original LEGO tracks are the go-to choice for many, but there are other legitimate options. Bluebrixx sells their own tracks at a much better price. They are not the only ones. There is also Modbrix, Trixbrix and 4DBrix. Some of the less common tracks are produced using 3D printers. You can also just download the 3D fiels and print them yourself.
You can of course, also visit Aliexpress to get a large variety of cheap tracks. The number of different designs availale is just amazing. LEGO is again falling behind.

Switches
You do not only want to control your trains but also the track itself. You can build an automated switch with original LEGO bricks. You will connect these switches to LEGO hubs that you can then control just like the trains. 4DBrix offers a complete automation system that also includes motors that are mounted on top of your original LEGO switches.
Sensor
To control the train, you need to know where they are on the tracks. You can add sensors to the train, such as a light sensor or a distance sensor. You can then place markers on the tracks, such as colourful plates (light) or walls (distance). The sensor depends on what controllers you use. The sensors typically originated from the different versions of Mindstorms. While driving over the marker, the train senses this information and can act upon it. You need a programmable hub, such as Mindstorms, to process the sensory input and act accordingly.
Alternatively, you can mount sensors to the track itself. This can again be original LEGO sensors (light or distance) or you can use 4DBrix’s sensor in combination with their whole system.
Controllers
If you use a distributed architecture, then you need the train controllers to communicate with the track controllers. At least one of them needs to be programmable so that it makes decisions. Alternatively, you can use a computer as a central controller that communicates with all components in your train system. This can be done wirelessly (Bluetooth, Infrared, or Wifi). Other systems, such as the 4DBrix System, use wires for all track-mounted sensors, switches and actuators. Alternatively, you can consider the MattzoController system, but it does require more knowledge in programming micro controllers. Anopther option is the TrixBrix system, but I am not sure how much it can be programmed.
Software
You will need software to make all the decisions in your train system. Based on sensory input from your train or track sensors your trains need to start/stop. Also, switches need to be triggered, booms lifted and decouplers triggered. The 4DBrix system uses the nControl™ software running on a computer to plan and program your train system.
The Brickrail software is based on PyBricks to program hubs/controllers. Another option is the Brick Automation Project, although it does not seem to have been updated in a while.
Computer
Depending on what controllers you choose, your computer needs to have USB, WiFi and Bluetooth. The latter is a bit more tricky than normal. You specifically need a Bluetooth Low Energy Dongle that integrates all Bluetooth LE features. If your computer does not have it built in then you need an external dongle.