|
Forum Index : Microcontroller and PC projects : PicoMite V7.00.00b8 and release candidates
| Page 1 of 2 |
|||||
| Author | Message | ||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
V7.00.00b8 is now available at https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V7.0.00b8 and will become the first release candidate unless any major issues arise or I have any more crazy ideas .This is a big update from b7 particularly in the two bluetooth host builds: New in beta 8: Bluetooth Classic keyboards On the PicoMiteRP2350BTH and the PicoMiteHDMIBTH a Bluetooth keyboard no longer has to be a BLE one. An older Bluetooth Classic keyboard, and the touchpad or mouse built into one, now works alongside a BLE keyboard and a Bluetooth speaker, all three connected at once. • Finding it. Put the keyboard in pairing mode and run BLUETOOTH SCAN. It is listed as a Keyboard, as speakers are listed as Audio. • Pairing it. BLUETOOTH CONNECT "name" (the name SCAN showed, or the address) pairs it. If the keyboard asks for a code, the console shows Bluetooth keyboard pairing: type NNNNNN on the keyboard being paired, then Enter, as it does for a BLE keyboard. After that the keyboard reconnects by itself whenever it wakes up or is switched on, also after the board restarts. • Keys and touchpad. The keys go through OPTION KEYBOARD like a USB or BLE keyboard's: the layouts, the lock keys, auto-repeat and KEYDOWN() all work. A touchpad or mouse is DEVICE(MOUSE 2, ...), the same as a BLE mouse. • Tablet keyboards. Many low-cost keyboards sold for tablets have an operating-system mode, chosen with an Fn key combination or a switch (see the keyboard's instructions). Use its Windows or PC mode: in its iOS mode such a keyboard sends Cmd+arrow for Home and End and iPad shortcuts instead of F1 to F12, and its touchpad changes too. • BLUETOOTH STATUS has a Classic keyboard: line: the keyboard's address, whether it is connected, and which of its reports carry the keys, the pointer and the media keys. MM.INFO(BLUETOOTH KEYBOARD) gives its address when no BLE keyboard is connected, and BLUETOOTH FORGET forgets it. • What it costs. A third Bluetooth link and the HID code: the flash region has moved up 16 KB (the reset described at the top), and the MMBasic heap is 4 KB smaller, 320 KB on the PicoMiteRP2350BTH and 224 KB on the PicoMiteHDMIBTH. Tested: ![]() New in beta 8: Bluetooth speakers that work better A tester tried beta 7's Bluetooth audio with four devices: a generic receiver, a Milwaukee M12 site radio, a generic transmitter/receiver and a car stereo. Only the receiver worked properly. These changes, on the PicoMiteRP2350BTH and the PicoMiteHDMIBTH, are for the other three and for speakers like them. • Speakers that pair, then refuse the sound (BLUETOOTH CONNECT stops with Bluetooth error 0x66). Some devices agree a shorter encryption key than the board insisted on. It now accepts any length the Bluetooth specification allows, 7 to 16 bytes. The tester's transmitter/receiver, which gave these errors in beta 7, now works. • Speakers that connect but stay silent. The board could put more sound in one packet than the packet's header can count, and it offered only stereo, which a speaker that plays only mono cannot take. Packets now hold at most 15 frames, and mono is offered too (stereo is still chosen whenever the speaker can play it). • A speaker that plays only if the sound starts as it connects. The M12 played if PLAY was already running when it connected, but stayed silent if it connected first. When a speaker closes the board's audio stream, or does not start it when asked, the board now connects to it again when PLAY next needs it. The sound waits for up to 8 seconds meanwhile, so it starts late (by 1.5 to 5.5 seconds in our tests) rather than being lost. If that does not help, the next try waits 20 seconds, then longer. We have not had an M12 to try this with. OPTION AUDIO BLUETOOTH 0, which keeps the stream running from the moment a speaker connects, is another thing to try with such a speaker. • Short gaps every few seconds (the car stereo). The sound always went at the highest quality the speaker accepted, about 330 kbit/s. Over a link that could not carry that, the board fell behind until it had to drop a quarter of a second of sound. It now lowers the quality (the SBC bitpool) a step at a time while the link falls behind, and raises it again after ten seconds without trouble. • BLUETOOTH STATUS tells you much more about the speaker: its packet size (MTU) and the frames in each packet, the quality in use (bitpool 41 (of 53)) and how often it was lowered, packets the radio refused, how often the stream started, paused (and how many of the pauses the speaker made), was closed by the speaker, could not be started, and was reopened. If a speaker still misbehaves, a BLUETOOTH STATUS listing taken while it plays, or straight after a dropout, shows which of these it is. Please send us one. Other changes in beta 8: • OPTION CYW43 PINS: modules that wire the wireless chip differently. The WiFi and Bluetooth builds expected the radio on the Pico 2 W's pins, GP23 (power on), GP24 (data), GP25 (chip select) and GP29 (clock). OPTION CYW43 PINS wl_on, wl_d, wl_cs, wl_clk sets others. Waveshare's RP2350B Pico WiFi , for example, needs OPTION CYW43 PINS GP36, GP37, GP38, GP39, and connects to WiFi with it. ![]() The pins given are reserved, and GP23, GP24, GP25 and GP29 become normal I/O pins. OPTION CYW43 PINS DEFAULT, or OPTION RESET, goes back to the standard pins. An I2S DAC shares a PIO block with the radio, so its pins and the radio's data and clock pins must all be within GP0 to GP31 or all within GP16 to GP47. If the radio does not answer on the pins set, the board says CYW43 radio failed to start on GP36,GP37,GP38,GP39 (OPTION CYW43 PINS) (with the pins set) as it starts and carries on without WiFi or Bluetooth; the WEB commands then report WiFi radio not running. This is in the five RP2350 wireless builds: the WebMiteRP2350, PicoMiteRP2350BT, PicoMiteRP2350BTH, PicoMiteHDMIWEB and PicoMiteHDMIBTH. The WebMiteRP2040's pins stay fixed. • PNG images of any size, cropped, or part of one (RP2350). The PNG decoder now works a line at a time, so a PNG needs about 40 KB of memory whatever its size, where it needed room for the whole file and the whole image (2.7 MB for an 800x500 picture), and it loads faster: that picture takes 1 second on a 320x240 screen instead of 3. LOAD PNG crops an image larger than the screen, as LOAD BMP and LOAD JPG do, instead of stopping with Image too large, and takes two more optional parameters, the first column and row of the image to show: LOAD PNG fname$ [, x] [, y] [, transparent] [, alphacut] [, ximage] [, yimage]. SPRITE LOADPNG takes x_offset, y_offset, width, height after cutoff to load part of an image, as SPRITE LOADBMP does: SPRITE LOADPNG #n, filename$ [, transparent] [, cutoff] [, x_offset] [, y_offset] [, width] [, height]. • RP2350 with 16 MB of flash: the A: drive stays where it is. Every RP2350 build now lays out a 16 MB flash the same way: the firmware and its areas below 3 MB, a 1 MB MOD buffer, and a 12 MB A: drive from 4 MB to the end (see Memory and flash layout). Flashing a different build, OPTION RESET and the OPTION RESET presets keep the A: drive and its files; the options are reset as before. OPTION MODBUFF is not used on these boards (it says The MOD buffer is fixed at 1024K with 16M of flash): the 1 MB buffer is always there for PLAY MODFILE and FLASH MODBUFF LOAD, and the presets no longer ask before erasing everything. Boards with less flash are unchanged. The first boot of beta 8 reformats a 16 MB board's A: drive once (see the top). • The flash size is measured. OPTION FLASH SIZE (MM.INFO(OPTION FLASH SIZE)) was the size the flash chip reports in its ID, which not every maker encodes the same way. That figure is now checked by reading past the end of the chip, as the PSRAM's size already was, and the size is measured at every boot. • The A: drive's file system is littlefs 2.11.3 (it was 2.5.1), which brings three years of littlefs fixes. A write cut short by a power failure is now caught by a checksum of the flash it went into, where before it could be read back as good data. On a drive more than half full, the first two blocks, which describe the drive, were rewritten so often that they could wear out first. A power failure could leave an "orphaned" file or directory, and tidying it up could loop for ever. SEEK to near the end of a 4 KB block could read back old data, and a file open twice, written through one number and read through the other, could read corrupted data. Names still ignore case. An A: drive written by an earlier version is kept, but the first write to it converts it to littlefs's newer format, which earlier firmware cannot read: going back to beta 7 or earlier reformats the A: drive, so copy anything you need first. The new littlefs is about 1.4 KB larger, which took the PicoMiteRP2040's flash region up 16 KB, so that build resets on its first boot of beta 8 (see the top). • PicoMiteRP2350BT: a serial console beside the Bluetooth one. This build has no USB, so a board whose Bluetooth link could not be used had no console at all. After a fresh install or any OPTION RESET the console now also runs on GP8 (TX) and GP9 (RX), UART1 at the console baud rate; on a PicoComputer 3 these pins go to the board's own USB-serial bridge. OPTION LIST shows it as OPTION SERIAL CONSOLE COM2,GP8,GP9,BOTH. A board upgraded from beta 7 keeps its options, so give it the console with OPTION SERIAL CONSOLE GP8, GP9, B. Keep the B: on this build it means Bluetooth and serial, and without it the Bluetooth console goes silent. • I2S audio shares the radio's PIO block on the wireless builds (PIO2, or PIO1 on the WebMiteRP2040). That block is not available to your own PIO programs on these builds, and on the WebMiteRP2350, PicoMiteHDMIWEB and PicoMiteHDMIBTH PIO1 is now free for them. OPTION AUDIO I2S refuses pins the shared block cannot reach. • USB host: TinyUSB brought up to date. The USB host builds now use TinyUSB's current development version instead of release 0.21.0. When a keyboard, mouse, game controller or flash drive behind a hub does not answer while it is being set up, TinyUSB now resets it and sets it up again. With four devices behind a PicoComputer 3's hub, all four came up after every restart, reset and power-on. Every other build uses the same TinyUSB for its USB console. Please tell us about any USB device that worked with beta 7 and does not now. • A new companion manual, MMBasic_Performance_Guide.pdf, answers the common "how do I make it faster" questions with measurements on an RP2040 PicoMiteVGA and an RP2350 PicoMiteHDMIWEB, interpreted and compiled: statements per line, FOR against DO, constants against variables, CALL by name, long names, and when the MATH, ARRAY, SORT and MEMORY commands pay. It is in the supplementary manuals zip with the others. • PicoMiteBT.pdf, now titled PicoMite Bluetooth Versions, covers the two Bluetooth host builds as well as the PicoMiteRP2350BT: keyboards, mice and game controllers, speakers and headphones, pairings and BLUETOOTH STATUS. Fixed since beta 7 • Every build: sound played with PLAY (WAV, FLAC, MP3, MIDI, MOD, tones, sounds and arrays, and on the Bluetooth builds a speaker) stalled while LOAD BMP, LOAD IMAGE, LOAD JPG or LOAD PNG decoded a picture, and while SPRITE LOADBMP, BLIT LOADBMP or SPRITE LOADPNG read one. The decoders now keep the sound fed as they go. FLASH LOAD IMAGE into a flash slot still stops the sound: the flash is being written. • RP2350: an interlaced PNG, or a damaged one, could crash LOAD PNG or SPRITE LOADPNG. They now stop with Interlaced PNG not supported or Invalid or damaged PNG file. • RP2350: LOAD PNG did not refresh a buffered display (one with OPTION REFRESH), as LOAD BMP and LOAD JPG do. • Every build: a DIR$() loop that KILLs or renames the files it finds on A: missed some of them (24 of 40 in a test), because DIR$() carried on reading a directory it had already closed. The directory now stays open, and up to date, until DIR$() returns an empty string. • Every build: Ctrl-C at KILL's (Y/N) question, or an error part way through FILES, or through KILL or COPY with a wildcard, left an A: directory open, and the next of these commands, or CHDIR, could then hang the board at its next write to A:. A directory left open this way is now closed before it is used again. • PicoMiteRP2350BT, PicoMiteRP2350BTH and PicoMiteHDMIBTH: the radio was serviced from an interrupt that could fire 30,000 to 80,000 times a second and take 40 to 100% of the processor. I2S tones warbled and played on past their length, and the PicoMiteRP2350BT's heartbeat stopped. The radio is now polled from the main loop, as on the WiFi builds. • PicoMiteRP2350BTH and PicoMiteHDMIBTH: when another device used the board's Bluetooth LE services, BLUETOOTH STATUS could report a keyboard pairing as failed (status 0x13) that never happened, and the board could disconnect the keyboard. Only the keyboard's own link counts now. A keyboard that drops its link while pairing or reconnecting is reported as "interrupted"; a sleeping keyboard does this as it is retried, which is normal. • PicoMiteRP2350BTH and PicoMiteHDMIBTH: a Logitech Pebble Keys 2 K380s paired and connected but never typed. Its key report is 7 bytes, not the usual 8, and was ignored; the board now reads each keyboard's report layout from the keyboard itself. And while another Bluetooth LE keyboard was paired with the board, a keyboard that starts the pairing itself (the K380s again) could not pair at all: BLUETOOTH STATUS counted it as "interrupted" about once a second. It now pairs. BLUETOOTH STATUS's Last pairing line gives the keyboard's address when a pairing fails, and the pairing prompt now says to type the number "on the keyboard being paired". • PicoMiteRP2350BTH and PicoMiteHDMIBTH: a Bluetooth keyboard's Caps Lock LED came on for a moment and went out again, although Caps Lock stayed on: a keyboard waits for the computer to set its lock LEDs, and only USB keyboards were sent them. Bluetooth keyboards now are, for Caps, Num and Scroll Lock. On the PicoMiteHDMIBTH a Bluetooth keyboard's lock keys also sent the LED report to whichever USB device was plugged in first. • PicoMiteRP2350BTH and PicoMiteHDMIBTH: while a speaker that had been switched off still counted as connected (the link takes up to 20 seconds to time out), the sound quality was lowered step by step for nothing, and BLUETOOTH STATUS could then report it lowered several times but its lowest value as the full one. A link that sends nothing at all is no longer taken for a slow one, and the lowest value counts since the last BLUETOOTH STATUS, like the number of times. • PicoMiteHDMIBTH: a RESOLUTION change to another clock speed did not retune the radio's link, so at 378 MHz it ran at 63 MHz. • Wireless builds: a clock change (CPU SPEED, or RESOLUTION on the HDMI builds) retuned every state machine on the radio's PIO block, so I2S audio on that block could then play at the wrong speed. Only the radio's state machine is retuned now. • PicoMiteRP2350BT, PicoMiteRP2350BTH and PicoMiteHDMIBTH: I2S on GP32 or above could not work, because the radio had already fixed the PIO block's range of pins. • Every build: a program that stopped with Not enough memory could leave the board printing the same error at the prompt for ever, until a hardware reset. It now stops once and gives the > prompt. • Every build: after the reset button or a brown-out, MM.INFO(BOOT) said Restart if the board had last been restarted by CPU RESTART or an OPTION command, and the sign-on banner did not appear. It now gives the real cause, such as Reset Switch. • WebMiteRP2040 (Pico W): OPTION POWER drives GP23, which on the Pico W is the radio's power-on pin, so OPTION POWER PFM switched the radio off. It now refuses with GP23 is the wireless chip's power-on pin. |
||||
| Martin H. Guru Joined: 04/06/2022 Location: GermanyPosts: 1565 |
Peter, I have a similar keyboard, but it's connected via USB (Pico 3 computer). Is there a way to set it so that NumLock is NOT enabled when the computer is turned on? Cheers Martin 'no comment |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
OPTION KEYBOARD xx,0,0 should do the trick - missing from the manual for some reason |
||||
| hhtg1968 Senior Member Joined: 25/05/2023 Location: GermanyPosts: 243 |
well that is it. I guessed to be the only person with "num lock" on at startup... what is the meaning of the further parameters? |
||||
| hhtg1968 Senior Member Joined: 25/05/2023 Location: GermanyPosts: 243 |
I found it in the manual... |
||||
| flip Senior Member Joined: 18/07/2016 Location: AustraliaPosts: 131 |
Hi Peter, I have a problem with PM2 using a USB keyboard in combination with CDC port connected to slave PM. It could be my program too of course. I hope there's enough details here: Environment 'PM2 board: PicoMiteHDMI MMBasic USB RP2350B Edition V7.0.00b8 Connected to a RP2350-Zero on COM3: (PicoMite MMBasic RP2350A V6.04.00RC0) Fault Description 'USB keyboard interfering with COMMS port which has slave PicoMite connected ' During fault condition (with KB plugged in), there are NO RX CHARACTERS WHATSOEVER appearing on the Host (INPUT$) ' Also it seems partially sends commands to slave 'When running same program WITHOUT inbuilt hub's USB Keyboard connected it works fine - chars sending and receiving). 'BUT Whenever the USB keyboard is activated and the program runs, the program fails. AFTER the fault happens, I can unplug keyboard but fault persists (i.e. when using USB-C port from my computer. Seems to only come right by restarting either the Slave Pico or (naturally) the Host PicoMiteHDMI (without USB KB plugged in. PowerON the Host PM2 PicoMiteHDMI MMBasic USB RP2350B Edition V7.0.00b8 Copyright 2011-2026 Geoff Graham Copyright 2016-2026 Peter Mather Total of 6 Mbytes PSRAM available > USB CDC Device Connected on channel 5 (COM3) > US USB Keyboard Connected on channel 1 > Multi-touch Connected on channel 4 (6 contacts, 2048x2048) > Multi-touch Disconnected > Multi-touch Connected on channel 4 (6 contacts, 2048x2048) > option list PicoMiteHDMI MMBasic USB RP2350B Edition V7.0.00b8 OPTION SERIAL CONSOLE COM2,GP8,GP9 OPTION SYSTEM I2C GP20,GP21 OPTION FLASH SIZE 16777216 OPTION COLOURCODE ON OPTION KEYBOARD US, 0, 1, 300, 50 OPTION PICO OFF OPTION RESOLUTION 1024x600 @ 252000KHz OPTION DISPLAY 50, 128 OPTION HDMI PINS 1, 3, 5, 7 OPTION GUI CONTROLS 10 OPTION SDCARD GP29, GP30, GP31, GP32 OPTION KEYBOARD REPEAT 300,50 OPTION AUDIO I2S GP10,GP22', ON PWM CHANNEL 11 OPTION RTC AUTO ENABLE OPTION COUNT GP0,GP1,GP2,GP3 OPTION PLATFORM HDMIUSBI2S OPTION PSRAM PIN GP47 OPTION HEARTBEAT PIN GP25 Program I'm running as follows: 'Setup and open Comms FRAME CREATE FRAME BOX 0,0,126,48,2,1 FRAME TITLE 1,"Log Info",RGB(YELLOW) FRAME TITLE 2,"I/O to Slave uM",RGB(CYAN) ON ERROR SKIP OPEN "COM3:115200,1024" as #3 ',ComInt,1" as #3 IF MM.ERRNO Then FRAME PRINT 1,TIME$+" Com3 Slave Pico Open Failure:",RGB(Magenta),WRAP FRAME PRINT 1,CHR$(10) FRAME PRINT 1," Err:"+STR$(MM.ERRNO)+" "+MM.ERRMSG$,RGB(RED),wrap FRAME PRINT 1,CHR$(10) Finished Else FRAME PRINT 1,TIME$+" Com3 Slave Pico Open SUCCESS:",RGB(GREEN),WRAP FRAME PRINT 1,CHR$(10) FRAME WRITE EndIf 'Main Program Here Print #3,"" Pause 1000 Print #3,"SETPIN GP16,DOUT" Pause 1000 Print #3,"WS2812 O,GP16,1,RGB(127,0,127)" Pause 1000 Print #3,"WS2812 O,GP16,1,RGB(0,127,127)" Pause 1000 Print #3,"WS2812 O,GP16,1,RGB(0,0,0)" PAUSE 100 Print #3,"SETPIN GP16,OFF" PAUSE 100 FRAME PRINT 1,TIME$+" Set LED to Magenta, Cyan, Then OFF in turn",RGB(RUST),WRAP FRAME PRINT 1,CHR$(10) FRAME PRINT 1," Now communicating with Device on COM3....Press <ESC> to finish",RGB(WHITE),WRAP FRAME PRINT 1,CHR$(10) FRAME WRITE 'SUB ComInt ' INC ci% 'END SUB Do a$=INKEY$ IF LEN(a$) THEN lk$=a$ If a$=Chr$(27) THEN EXIT DO cs%=cs%+1 PRINT #3,a$; ENDIF b$=INPUT$(1, #3) n%=len(b$) If n% Then if lk$=b$ Then FRAME PRINT 2,b$,RGB(CYAN) ELSE FRAME PRINT 2,b$,RGB(WHITE) ENDIF wr%=1 cr%=cr%+1 ELSE 'When Input flow has stopped, do a FRAME WRITE of the frame display buffer IF wr% THEN FRAME WRITE wr%=0 ENDIF ENDIF Loop Finished END 'End section Sub Finished FRAME PRINT 1,TIME$+" "+Str$(ci%)+" interrupts and "+Str$(cr%)+" chrs recd, "+Str$(cs%)+" chrs sent",RGB(WHITE),WRAP FRAME PRINT 1,", press any key to exit",RGB(YELLOW),WRAP FRAME PRINT 1,CHR$(10) FRAME WRITE DO:LOOP WHILE INKEY$="" FRAME PRINT 1,TIME$+" Finished program.",RGB(YELLOW),WRAP FRAME WRITE CLOSE #3 End Sub Let me know if I've confused with above Regards Phil |
||||
| fred777 Senior Member Joined: 01/07/2021 Location: United KingdomPosts: 106 |
Hi Peter, I have noticed a problem with RP2350A V7 (b6 and b8) that I didn't have on V6. I have this Function key definion: OPTION F9 "FLASH LOAD 1:EDIT"+chr$(13)+chr$(10) So that when I press F9 the program in Flash slot 1 is loaded and the editor is opened. Now in V7 if a largish Program was loaded previously and I press F9 the Pico crashes or in some cases the editor does open but the prog loaded from flash is corrupted: ' Hmmmm OPTION ? 1 DIM ?$(2000) ? 100 INPUT ? instead of ' Hmmmm OPTION base 1 DIM txt$(2000) length 100 INPUT bla So to summarize: load large program, press F9, hangs The same happens when i type in FLASH LOAD1:EDIT But not when using 2 separate commands: FLASH LOAD 1 EDIT works fine. I have attached the 2 source files and steps to reproduce sources.zip Happens on 2 different 2350 boards with V7, but not with V6 > option list PicoMite MMBasic RP2350A V7.0.00b8 OPTION FLASH SIZE 16777216 OPTION COLOURCODE ON OPTION CASE UPPER OPTION PICO OFF OPTION CPUSPEED (KHz) 384000 OPTION DISPLAY 36, 100 OPTION SDCARD GP21, GP22, GP23, GP20 OPTION F8 FLASH RUN 1 OPTION F9 FLASH LOAD 1:EDIT OPTION PSRAM PIN GP0 Steps to reproduce error: B: LOAD "MEMERR.BAS" FLASH OVERWRITE 1 LOAD "ZZZRUN.BAS" FLASH LOAD 1:EDIT <- Crashes or opens editor with garbled source Edited 2026-10-11 00:47 by fred777 |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
flip and fred777 Thanks for the reports, I think I have found both. The fixes will be in the next build. |
||||
| mozzie Guru Joined: 15/06/2020 Location: AustraliaPosts: 450 |
G'day Peter, As usual life and work got in the way of testing but back at home so some further results. Loaded up V7.00.00b8 from your GITHUB: First the good news, All the Bluetooth keyboards I can find now work, BT classic and BT LE. The serial console on the BT version is a welcome addition. Loaded up the "Pump Controller GUI" test and had Bluetooth keyboard / mouse + USB wireless keyboard / mouse + touchscreen + terminal all working simultaneously, VERY impressive. Also found some further Bluetooth devices to test, list so far: Generic BT RX unit - WORKING BEATS BT headphones - WORKING Generic BT TX/RX unit - WORKING (RX MODE) Milwaukee M12 Radio + Charger - WORKING (OPTION AUDIO BLUETOOTH 0) - see attached file for tests, hopefully useful BT_Status_M12_2.zip AXIS AX1801BT Car radio - AUDIO INTERRUPTED - Click and short pause in audio for approx 0.5 sec every 3 seconds ![]() AXIS AX1300BT Car radio - AUDIO INTERRUPTED - Clicks and stutter in audio at random times. ![]() VDO TR723UB-BU Car Stereo - NO-CONNECT - ERROR 66 There are a few more units I can test once I figure out where the box is hiding in the shed. Testing with both the posted PicoMiteRP2350BTHV7.00.00b8 / PicoMiteHDMIBTHV7.00.00b8 and the latest version from GITHUB show the same results as previous for BT Audio. To clarify, I am more interested in the BT keyboard operation than the BT audio but happy to continue testing as time allows. It would be good to see the M12 and car stereos working as this would be an obvious use case. I guess the next logical step, and in my world more useful than the BT audio, would be a BTLE COMM PORT between PicoMite BT's or to a HM10 module etc. As usual, no idea how complex this would be, just a thought. Regards, Lyle. |
||||
| JanVolk Guru Joined: 28/01/2023 Location: NetherlandsPosts: 420 |
Is it correct that with version PicoMite MMBasic RP2350A V7.0.00b5, the help.txt files can be successfully loaded via USB using Xmodem, but with PicoMiteHDMI MMBasic USB RP2350A Edition V7.00.00b5 and higher, they cannot be loaded via an external RX/TX connection? Jan. |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
There are loaded over the console like any other build. All USB host builds have the console on GP8/GP9 and need an external usb/uart unless using one of the boards with one already there like the Pico Computer 3 |
||||
| JanVolk Guru Joined: 28/01/2023 Location: NetherlandsPosts: 420 |
Peter, I am using a standard RP2350A with 16MB of flash, a Raspberry Pi Pico 2 pinout, an HDMI module soldered directly to the pins, and an external UART on pins GP8 and GP9. Control works fine via Tera Term, and firmware updates via the standard USB port also work correctly; however, the `xmodem r "helpNed7b8"` command runs, but I cannot find the file on my desktop after making the correct selection in Tera Term—even though this process works fine with the standard RP2350 version via the standard USB port. (My file is 600KB.) I know I can use a USB drive with the RP2350, but I wanted to do it via RX/TX. What is the situation regarding PicoMite MMBasic VGAUSB RP2040 V7.0.00b5? Perhaps I am misunderstanding something? Jan. |
||||
| flip Senior Member Joined: 18/07/2016 Location: AustraliaPosts: 131 |
Peter, Maybe irrelevant, but a small point I forgot to mention in my report above is that, with my obsession with flash writes, when developing/testing programs, mostly now on the PicoComputer 2B HDMIUSBI2S I work off removable media, and running in PSRAM...something like: C: '(or B:) ..just mentioning so you can test this kind of scenario just in case the problem/resolution somehow combines with any possible PSRAM allocation/overflow issue.EDIT "TestProg.BAS" RAM FILE LOAD 2,"TestProg.BAS",O RAM RUN 2 For the moment I can use a laptop as the keyboard for this code. Amazing work. Regards Phil |
||||
| toml_12953 Guru Joined: 13/02/2015 Location: United StatesPosts: 731 |
When you do a LIBRARY LIST, the system waits for a keypress at the end of each screen. How about the same functionality for an OPTION LIST? |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
Lyle, re the VDO TR723UB-BU Car Stereo Does the VDO show a PIN on its display, or ask for one, when the board connects? What does its manual give as the Bluetooth PIN? Can a phone stream music to it? That confirms it does A2DP at all; some older car units only did hands-free. re the M12 Please set OPTION AUDIO BLUETOOTH 10: Have a PLAY running when the M12 connects, so it plays (the working case). PLAY STOP, then wait over 10 seconds without touching the radio. STATUS should show pauses: 1 (0 by the speaker). Start PLAY again. Sound or silence? If there's sound: starting at connect fixes idle mode for the M12, and it's a small change. If there's silence: the M12 can't resume a paused stream, and OPTION AUDIO BLUETOOTH 0 is the answer for this radio. Jan Just tested loading the biggest of my help files and it worked perfectly for me. I tested on my current build but that is the same a b8 so try that. xmodem loads to the current directory. ![]() Edited 2026-10-11 17:36 by matherp |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
The first V7.00.00 release candidate is now available on https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V7.00.00RC0 This fixes a number of bugs raised in b8 and adds two bits of functionality. The most generally useful is ZMODEM which is now in every build. This is massively better than X and YMODEM and includes the ability to transfer multiple files at once with full error detection AND correction. For standard (non-USB host) builds transfer speed is limited only by the speed of writing to sdcard or the A: drive. For USB-host builds transfer speed is limited by the speed of the serial port. Testing has shown that 750,000 bps is the optimum speed for minimum errors needing correction and throughput. The ZModem protocol requires a cooperating program on the remote computer. On Windows Tera Term is recommended: after running the ZMODEM command select File -> Transfer -> ZMODEM -> Send or Receive from the Tera Term menu. On Linux and macOS use sz (to send) and rz (to receive) from the lrzsz package, run with the serial port as their input and output, for example from a terminal program such as minicom. Hopefully Jim can add support in MMEdit? I want to remove YMODEM in future builds as it is unreliable and now entirely redundant New in RC0: Bluetooth serial devices on COM7 The two Bluetooth host builds, the PicoMiteRP2350BTH and PicoMiteHDMIBTH, can now use a Bluetooth serial device as the serial port COM7, much as the USB host builds use a USB serial device as COM3 to COM6. It can be a Bluetooth Classic device with a serial port (the Serial Port Profile), such as a Bluetooth GPS receiver, or a Bluetooth LE device with a serial service: the Nordic UART Service (many modules, and the console of a PicoMiteRP2350BT), an HM-10 module's, or Microchip's Transparent UART. One serial device is connected at a time, alongside a BLE keyboard, a Classic keyboard and a speaker. BLUETOOTH SCAN ' a BLE serial device is listed as "BLE serial" BLUETOOTH CONNECT "XGPS150-2DDCBF" ' by name or address; it is remembered OPEN "COM7:" AS #1 ' or OPEN "COM7:" AS GPS • Connecting. BLUETOOTH CONNECT asks a Classic device for its serial port and pairs with it (a PIN request is answered with 0000); one without a serial port is tried as a speaker, as before. A BLE device is used without pairing unless it asks for it. The device is remembered. • Using it. COM7 works like a USB serial port: a buffer size, ON COM interrupts, LOC, INPUT$, PRINT # (which ends lines with CR and LF) and AS GPS all work. A baud rate is accepted and ignored. • Reconnecting. While COM7 is open, the device is reconnected whenever it is not connected: at OPEN, and after it is switched off and on or goes out of range. The console says Bluetooth serial device connected (COM7) and Bluetooth serial device disconnected (COM7). A Classic device is retried at intervals of up to a minute, a BLE device as soon as it advertises. A closed port reconnects nothing, and CLOSE leaves the device connected. • New forms. BLUETOOTH DISCONNECT SERIAL lets the device go until COM7 is next opened or the next BLUETOOTH CONNECT. MM.INFO$(BLUETOOTH SERIAL) returns its address, BLUETOOTH STATUS has a Serial: line with the bytes received and sent, and BLUETOOTH FORGET covers the device. BLUETOOTH SCAN's type column is two characters wider. • Tested with a Dual XGPS150 GPS receiver (Classic) and a PicoMiteRP2350BT's console (BLE). Some GPS receivers have an iPhone and iPad mode that hides their serial port; on the XGPS150 set the switch towards the USB connector. Older receivers, the XGPS150 among them, give a date 1024 weeks early: the GPS week rollover, in their own firmware. The serial device needed room. The PicoMiteHDMIBTH has moved its flash region up 16 KB again and given 4 KB of its heap (224 to 220 KB), and the PicoMiteRP2350BTH has moved its flash region up 16 KB. Coming from RC0 both reset their options and pairings at their first boot, and their A: drive is 16 KB smaller (on a 16 MB board it keeps its fixed place and size). Fixed since RC0: • The PicoMiteRP2350BT's scan response carried garbage instead of the Nordic UART Service's UUID, so software that finds such a device by its advertised service - a computer, or the BLUETOOTH SCAN above - did not see it. Phone terminal apps, which connect by name, were not affected. • GPS(TIME) and GPS(DATE) returned 48 characters of whatever followed them in memory until the receiver sent a sentence with a date, on every build. They now return 00:00:00 and 00-00-2000 until then. New in RC0: ZMODEM ZMODEM moves a program or a file between the board and your computer over the console, the USB console or a serial one. It takes the same forms as XMODEM and YMODEM, on every build: ZMODEM SEND ' the program in memory ZMODEM SEND "B:/data.csv" ' a file on A:, B: or C: ZMODEM RECEIVE ' a program into program memory ZMODEM RECEIVE "B:/data.csv" ' a file ZMODEM RECEIVE "B:/dl/*" ' any number of files, under the sender's names ZMODEM CRUNCH ' a program, without comments, blank lines and spaces • It recovers instead of failing. Every block carries a CRC-32 and its place in the file. When a block is lost or damaged the receiver asks for the data again from that point, so a poor connection slows a transfer down rather than stopping it. That matters most on a serial console, where nothing holds the sender back. • It is fast. Over the USB console with Tera Term a 512 KB file takes about 2 seconds on an RP2350 and 3 seconds on an RP2040. Over a serial console it depends on the baud rate: through a PicoComputer 3's CH340 at 750000 baud, about 70 KB a second. Some adapters, the CH340 among them, lose data on the way to the computer at 921600 baud; ZMODEM recovers, but 750000 is faster. • At the other end use Tera Term on Windows (File > Transfer > ZMODEM > Send or Receive), or sz and rz from the lrzsz package on Linux and macOS. The board waits 60 seconds for the other end to start, and a transfer cancelled there stops with Cancelled by remote. • Names. ZMODEM SEND gives the computer the name of the file the program was loaded from, or FILE.DAT; ZMODEM SEND file$ gives the file's name without its drive or directory. ZMODEM RECEIVE file$ saves under file$ whatever name the sender gives, and of a batch of files keeps only the first. • Many files at once. ZMODEM RECEIVE "*" takes every file the sender offers and saves each one in the current directory under the sender's name (without any directory it sends), overwriting a file of that name. Put a directory in front of the * to receive into it, as in ZMODEM RECEIVE "B:/dl/*". In Tera Term select all the files in the ZMODEM Send dialog; with lrzsz list them, as in sz *.bas. At the end it prints Received 3 files, 221000 bytes. If an error stops it part way, the files before it are complete and the error says how many there were, as in The path name format is invalid (files received: 1). • Programs and files. The file forms also work inside a program; the program forms are for the command prompt. A program too large for the receive buffer stops with Not enough memory, and the program in memory is left as it was. SEND, RECEIVE and CRUNCH can be shortened to S, R and C. Four builds have moved their flash region up 16 KB to make room for ZMODEM (the reset described at the top, and Memory and flash layout). New in RC0: Bluetooth serial devices on COM7 On the PicoMiteRP2350BTH and the PicoMiteHDMIBTH a Bluetooth serial device can be the serial port COM7, much as a USB serial device is COM3 to COM6. It can be a Bluetooth Classic device with a serial port (the Serial Port Profile), such as a Bluetooth GPS receiver, or a Bluetooth LE device with a serial service: the Nordic UART Service (many modules, and the console of a PicoMiteRP2350BT), an HM-10 module's FFE0, or Microchip's Transparent UART. • Finding it. BLUETOOTH SCAN lists a Bluetooth LE serial device as BLE serial; a Classic one is listed without a type. • Connecting. BLUETOOTH CONNECT "name" (or the address) connects it: Connected to serial device 00:19:01:2D:DC:BF (RFCOMM channel 1) as COM7. A Classic device is paired as it connects, answering a PIN request with 0000; a Bluetooth LE one is used without pairing unless it asks. The device is remembered, one at a time. • Using it. OPEN "COM7:" AS #1 or OPEN "COM7:" AS GPS, then as any serial port: a buffer size, an interrupt and its level work as for COM1, and a baud rate is accepted and ignored. With AS GPS the GPS() functions decode it, every sentence of every second included. • Staying connected. While COM7 is open the device is reconnected whenever it is not connected: when the port is opened, after it is switched off and on, and when it comes back into range. CLOSE leaves the link up. BLUETOOTH DISCONNECT SERIAL lets it go until COM7 is next opened or the next BLUETOOTH CONNECT; BLUETOOTH FORGET forgets it. • Checking it. BLUETOOTH STATUS has a Serial: line with the bytes received and sent, and MM.INFO$(BLUETOOTH SERIAL) gives the connected device's address, or an empty string, so a program can wait for it. • Good to know. Some GPS receivers have a switch for use with an iPhone or iPad that hides their serial port: set it for other devices (on the Dual XGPS150, towards the USB connector). An older GPS can report a date 1024 weeks too early, a fault in its own firmware (the GPS week rollover). • What it costs. A fourth Bluetooth connection, RFCOMM and a second Bluetooth LE client: both builds' flash regions have moved up (the reset described at the top), and the PicoMiteHDMIBTH's heap is 4 KB smaller, 220 KB. The chapter Bluetooth Versions in the manual and PicoMiteBT.pdf describe it in full. Fixed since beta 8 • Every build: FLASH LOAD n with another command after it on the same line, such as FLASH LOAD 1:EDIT typed at the prompt or held in an OPTION F9 key, left that command looking at the names of the program that had been in memory before. EDIT and LIST showed the names as ?, or the board hung or crashed, most often when the earlier program was the larger. RAM LOAD n (RP2350 with PSRAM) did the same. The command after the load now sees the program just loaded. In beta 8, put the two commands on separate lines. • Every build whose console is the USB port (all but the USB host builds and the PicoMiteRP2350BT): the console could lock up for good. USB stopped, the heartbeat stopped, and only a reset or a power cycle brought the board back. It took characters arriving one per USB packet, as when a PicoMite USB host prints to another PicoMite on its COM3 or a PC program writes byte by byte, and then happened within seconds; RP2040 boards did it on beta 7 and beta 8. With the fix such a board took 9,000 lines one byte at a time over five minutes without a hitch. • USB host builds: OPEN "COM3:..." to a USB serial device that refused the baud rate or the DTR/RTS setting still opened, and then nothing went either way, with no error at either end. It now stops with COM3: USB device did not accept the baud rate (or ... DTR/RTS). A PicoMite at the other end only reads and writes its USB console while DTR is set. • USB host builds: a serial adapter with a Prolific PL2303 chip was ignored. It now opens as COM3 to COM6, like FTDI, CP210x and CH34x adapters. • WebMites (WebMiteRP2040, WebMiteRP2350, PicoMiteHDMIWEB): a TFTP request for B:/name was read from or written to the current drive instead of B: after an error, after leaving EDIT or an XMODEM transfer, or after a command with no arguments such as CLS. The drive in the request is now always the one used. • WebMites: a TFTP transfer that failed, such as a request for a missing file or a missing directory, left the computer waiting until it timed out, set MM.ERRNO, and stopped a running program with an error it had not caused (Could not find the file); the next transfer was then refused. The computer now gets a TFTP error at once, the console shows TFTP error: and the reason, and a running program carries on. • Every build: until the GPS sent a sentence with the date, GPS(TIME) and GPS(DATE) returned 48 characters of whatever was in memory. They now return 00:00:00 and 00-00-2000. • PicoMiteRP2350BT: the Bluetooth LE scan response no longer carried the Nordic UART Service's identifier, so anything that looks for the console by its service (a PC scanning with bleak, or the BTH builds' BLUETOOTH SCAN) did not see it. Phone terminal apps connect by name and were not affected. • Manual: OPTION KEYBOARD was said to ignore everything after the layout for USB and Bluetooth keyboards. Its caps lock, num lock and repeat settings work for those keyboards too, as they always have. (The beta 8 manual on GitHub was replaced with this correction after the release.) Edited 2026-10-11 19:21 by matherp |
||||
| mozzie Guru Joined: 15/06/2020 Location: AustraliaPosts: 450 |
G'day Peter, Many thanks for the Bluetooth serial system, will dig out some devices and give it a try, also I believe you are once again reading my mind, ZModem answers a question I had pondered but not yet asked, very much appreciated. The VDO TR723BU stereo does require a PIN of 1234 when pairing, this is from the manual and not shown on the screen. The VDO unit and both the AXIS units (AX1801BT / AX1300BT) work from Iphone and are A2DP capable. I was installing them in trucks and excavators and the drivers / operators demanded handsfree and music streaming or they got upset and had a cry I have tried to catch a Blutooth Status report at the exact moment the AX1801BT stereo glitched but so far no amount of tries shows a significantly different outcome to those posted previously. The M12 radio Bluetooth status reports are in ZIP file: BT_Status_M12_3.zip But the short version is it shows PAUSES:1 after PLAY STOP + 30 secs and will play again after a pause of indefinite length. Still yet to locate the box of units for further testing, there should be approx 10 different Bluetooth car radios in it to test. Regards, Lyle. |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
Lyle Please have a go with this, many thanks for all your testing: PicoMiteHDMIBTHV7.00.00RC0.zip # Bluetooth audio: test build after RC0 Thank you for the reports on the M12 and the three car radios. This build changes three things, one for each of the problems you found. We have only been able to try them with our own speakers, so your results on the real devices are what tells us whether they work. - **M12:** the sound stream now starts as soon as a speaker connects, whatever the `OPTION AUDIO BLUETOOTH` idle time. Your tests showed the M12 plays only if the stream starts soon after it connects, which is why it worked with `OPTION AUDIO BLUETOOTH 0` and not with an idle time. - **VDO TR723UB-BU:** `BLUETOOTH CONNECT` now takes a PIN after the name, so it can be given the 1234 the radio needs. Without one, 0000 is used as before. - **AXIS AX1801BT:** the board now offers the speaker only 44.1 kHz. The radio was choosing 48 kHz, and we suspect that is behind the gap every 3 seconds. Nothing was changed for the AXIS AX1300BT, but please repeat its test (see below) so we can compare. ## Installing it The build is for the PicoMiteRP2350BTH, as before. Coming from RC0 nothing is lost: options, pairings and programs are kept. `MM.VER` still says 7.00005, the same as RC0. To check you have the new build, type this (the name does not matter): ``` BLUETOOTH CONNECT "x", "" ``` The new build answers `Error : PIN must be 1 to 16 characters`. RC0 gives a different error. ## Before each test Use the default idle time of 60 seconds, not 0. The M12 test is about whether it now works with an idle time: ``` OPTION AUDIO BLUETOOTH 60 ``` If Bluetooth is already the audio output this only changes the idle time; otherwise the PicoMite restarts. The speaker counts in `BLUETOOTH STATUS` (stream starts and pauses, gaps, send waits, dropped samples and the rest) start again from zero each time you use it, so they always cover the time since the last `BLUETOOTH STATUS`. ## Test 1: the M12 1. Connect it again from scratch (use the name `BLUETOOTH SCAN` shows for it): ``` BLUETOOTH DISCONNECT BLUETOOTH CONNECT "M12 name" BLUETOOTH STATUS ``` The `Speaker:` line should end in `streaming`, not `idle`. 2. Within a minute, play a tone. Do you hear it? ``` PLAY TONE 440, 440, 3000 ``` 3. Leave it alone for 2 minutes, then type `BLUETOOTH STATUS`. It should say `idle` and `pauses: 1 (0 by the speaker)`. Play the tone again. Do you hear it? (It starts about half a second late, which is normal.) 4. Switch the M12 off, wait 30 seconds and switch it on again. The PicoMite should reconnect by itself within a minute or so and show `Bluetooth speaker connected`. Leave it for 2 minutes, then play the tone again. Do you hear it? 5. Send the `BLUETOOTH STATUS` listing from the end. ## Test 2: the VDO TR723UB-BU 1. If the radio lists the PicoMite from your earlier attempts, delete it on the radio first. 2. Put the radio into its pairing mode, then: ``` BLUETOOTH SCAN BLUETOOTH CONNECT "VDO name", "1234" ``` using the name the scan shows. It should end with `Connected to ...`. The PIN is only needed this once; after that the radio reconnects by itself like the others. 3. Play a tone, and then some music from a file (MP3, WAV or FLAC) for a few minutes. Does it play cleanly? 4. Send the `BLUETOOTH STATUS` listing. If `BLUETOOTH CONNECT` fails, send the error line and the `BLUETOOTH STATUS` listing. ## Test 3: the AXIS AX1801BT 1. Connect it the way you did before, and tell us which way that was: the radio connecting by itself, or `BLUETOOTH CONNECT`. 2. `BLUETOOTH STATUS`: the `Stream:` line should now start `SBC 44100 Hz`. It said 48000 before. 3. Play music from a file for at least 3 minutes. Is the gap every 3 seconds gone, still there, or different? 4. Send the `BLUETOOTH STATUS` listing from straight after the music. ## Test 4: the AXIS AX1300BT 1. Play music from a file for at least 3 minutes, as before. Are the stutters the same, better or worse? 2. Send the `BLUETOOTH STATUS` listing from straight after the music. 3. If a Bluetooth keyboard was connected during that test, please repeat it with the keyboard switched off, and say whether the stutters change. This tells us whether the radio link itself is running out of room. ## Test 5: the devices that already worked Connect one of them, play a tone and some music, and check that it still works. Its `Stream:` line should say 44100 Hz. ## What to report For each device: what you did, what you heard, and the `BLUETOOTH STATUS` listing. Please copy the listings from the terminal window as text rather than photos if you can, so we can compare the numbers directly. If anything happens that is not described here, such as an error, a message, or a connection dropping, note what you were doing at the time. |
||||
| mozzie Guru Joined: 15/06/2020 Location: AustraliaPosts: 450 |
Hi Peter, Is it possible to post the RP2350BTH version as well for testing? The 4” LCD version is a lot easier to move about. Regards, Lyle. Edited 2026-10-11 21:00 by mozzie |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11991 |
Of course PicoMiteRP2350BTHV7.00.00RC0.zip |
||||
| Page 1 of 2 |
|||||
| The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2026 |