Pcbnew external plugin?

Can I install both version in one computer ? Or only one version?

First google result: (This is not a question about kicad but about if it is possible to have multiple versions of the same program running under your operating system. Disclaimer: not as easy as one might expect)
https://ubuntuforums.org/showthread.php?t=2041575

I have read https://kicad.org/download/ubuntu/
thank you so much for the info,
I will remove the stable version and replace it with dev version and keep posted,
thanks

Just a warning: The nightly version is not guaranteed to produce files that can be opened in the stable version.
There is not even a guarantee that one nightly build can open the files produced by another nightly build. (In most cases there is no problem but you might encounter one. Just know the dangers that come with using a development build.)

How to use this plugin with pcbnew ?

I tried following this :


but no luck after I copy the file to those directories, anything else I should change or fix ?

That only works for scripts designed to work as “action plugin”. For the kicad-bga-tools script, you can run it from the Linux command line or from pcbnew script console. Note you have to edit bga_dogbone.py with the name of your board, and maybe other parameters.

2 Likes

That dogbone script does not have the required code to be a KiCad ActionScript, so will not appear on the External Plugins menu. You must place the script files in plugins directory, then bring up the Scripting Console and type

import bga_dogbone

Be sure to modify the script to load your desired file.

1 Like

Do you mean running it from here ?


How to call that script from linux command or that console ?
thanks

I tried running it by changing the pcb file name with my file but I got :
bianchi@bianchi-HP-Pavilion-dv6-Notebook-PC:~/kicad-bga-tools$ python2 bga_dogbone.py
Traceback (most recent call last):
File “bga_dogbone.py”, line 82, in
data = make_dogbones(my_board, mod, 0, 6)
File “bga_dogbone.py”, line 72, in make_dogbones
info = get_bga_info(mod)
File “/home/bianchi/kicad-bga-tools/bga_utils.py”, line 31, in get_bga_info
info.spacing = detect_spacing(module)
File “/home/bianchi/kicad-bga-tools/bga_utils.py”, line 14, in detect_spacing
for pad in module.Pads():
AttributeError: ‘NoneType’ object has no attribute ‘Pads’

What does it mean ??

Did you modify the following line to point to be a Module with a Reference that exists in your schematic? The error indicates that the following line failed to find a Module.

mod = my_board.FindModuleByReference("t.xc7.inst")

The module is equal to my bga footprint?

Kind regards,
Riko

I assume so, based on the name of the script. It should be changed to the Reference of the module/footprint.

Footprint, It means I need to check my netlist, doesn’t it?
I post it later on, thx

Kind regards,
Riko

Footprint is in the layout, symbol is in the schematic. I would expect your schematic “Reference” is the same as your Footprint “Reference”. It starts out that way but I think you can modify it in the layout after import from schematic.

Is that what you mean ?

Footprint = BGA-144_12x12_13.0x13.0mm_Pitch1.0mm

Thanks

from :

mod = my_board.FindModuleByReference(“U1”)

I got this :

bianchi@bianchi-HP-Pavilion-dv6-Notebook-PC:~/kicad-bga-tools$ python2
bga_dogbone.py
Traceback (most recent call last):
File “bga_dogbone.py”, line 83, in
data = make_dogbones(my_board, mod, 0, 6)
File “bga_dogbone.py”, line 73, in make_dogbones
return [info.spacing, make_dogbone(board, mod, info, skip_outer,
edge_layers)]
File “bga_dogbone.py”, line 9, in make_dogbone
net = get_first_pad(mod).GetNet()
File “/home/bianchi/kicad-bga-tools/bga_utils.py”, line 24, in
get_first_pad
for pad in filter(lambda p: p.GetNet().GetNodesCount() > 1,
module.Pads()):
File “/home/bianchi/kicad-bga-tools/bga_utils.py”, line 24, in
for pad in filter(lambda p: p.GetNet().GetNodesCount() > 1,
module.Pads()):
File “/usr/lib/python2.7/dist-packages/pcbnew.py”, line 15050, in

getattr = lambda self, name: _swig_getattr(self, NETINFO_ITEM,
name)
File “/usr/lib/python2.7/dist-packages/pcbnew.py”, line 74, in
_swig_getattr
return _swig_getattr_nondynamic(self, class_type, name, 0)
File “/usr/lib/python2.7/dist-packages/pcbnew.py”, line 69, in
_swig_getattr_nondynamic
return object.getattr(self, name)
AttributeError: type object ‘object’ has no attribute ‘getattr
bianchi@bianchi-HP-Pavilion-dv6-Notebook-PC:~/kicad-bga-tools$

Any ideas why ?

Here’s the net

(export (version D)
(design
(source noname.sch)
(date “Thu 24 Aug 2017 13:43:37 AWST”)
(tool “Eeschema 4.0.2+dfsg1-stable”)
(sheet (number 1) (name /) (tstamps /)
(title_block
(title)
(company)
(rev)
(date)
(source noname.sch)
(comment (number 1) (value “”))
(comment (number 2) (value “”))
(comment (number 3) (value “”))
(comment (number 4) (value “”)))))
(components
(comp (ref IC1)
(value ATMEGA128-A)
(footprint TQFP-64_14x14mm_Pitch0.8mm)
(libsource (lib atmel) (part ATMEGA128-A))
(sheetpath (names /) (tstamps /))
(tstamp 599E62E0))
(comp (ref U1)
(value Allwinner_H3)
(footprint BGA-144_12x12_13.0x13.0mm_Pitch1.0mm)
(libsource (lib OzPi) (part Allwinner_H3))
(sheetpath (names /) (tstamps /))
(tstamp 599E6860)))
(libparts
(libpart (lib atmel) (part ATMEGA128-A)
(description “TQFP64, 128k Flash, 4k SRAM, 4k EEPROM, JTAG”)
(docs http://www.atmel.com/Images/doc2467.pdf)
(fields
(field (name Reference) IC)
(field (name Value) ATMEGA128-A)
(field (name Footprint) TQFP64))
(pins
(pin (num 1) (name ~PEN) (type input))
(pin (num 2) (name “PE0(RXD0/PDI)”) (type BiDi))
(pin (num 3) (name “PE1(TXD0/PDO)”) (type BiDi))
(pin (num 4) (name “PE2(XCK0/AIN0)”) (type BiDi))
(pin (num 5) (name “PE3(OC3A/AIN1)”) (type BiDi))
(pin (num 6) (name “PE4(OC3B/INT4)”) (type BiDi))
(pin (num 7) (name “PE5(OC3C/INT5)”) (type BiDi))
(pin (num 8) (name “PE6(T3/INT6)”) (type BiDi))
(pin (num 9) (name “PE7(IC3/INT7)”) (type BiDi))
(pin (num 10) (name “(~SS~)PB0”) (type BiDi))
(pin (num 11) (name “(SCK)PB1”) (type BiDi))
(pin (num 12) (name “(MOSI)PB2”) (type BiDi))
(pin (num 13) (name “(MISO)PB3”) (type BiDi))
(pin (num 14) (name “(OC0)PB4”) (type BiDi))
(pin (num 15) (name “(OC1A)PB5”) (type BiDi))
(pin (num 16) (name “(OC1B)PB6”) (type BiDi))
(pin (num 17) (name “(OC2/OC1C)PB7”) (type BiDi))
(pin (num 18) (name “PG3(TOSC2)”) (type BiDi))
(pin (num 19) (name “PG4(TOSC1)”) (type BiDi))
(pin (num 20) (name ~RESET) (type input))
(pin (num 21) (name VCC) (type power_in))
(pin (num 22) (name GND) (type power_in))
(pin (num 23) (name XTAL2) (type BiDi))
(pin (num 24) (name XTAL1) (type BiDi))
(pin (num 25) (name “(SCL/INT0)PD0”) (type BiDi))
(pin (num 26) (name “(SDA/INT1)PD1”) (type BiDi))
(pin (num 27) (name “(RXD1/INT2)PD2”) (type BiDi))
(pin (num 28) (name “(TXD1/INT3)PD3”) (type BiDi))
(pin (num 29) (name “(ICP1)PD4”) (type BiDi))
(pin (num 30) (name “(XCK1)PD5”) (type BiDi))
(pin (num 31) (name “(T1)PD6”) (type BiDi))
(pin (num 32) (name “(T2)PD7”) (type BiDi))
(pin (num 33) (name “PG0(~WR~)”) (type BiDi))
(pin (num 34) (name “PG1(~RD~)”) (type BiDi))
(pin (num 35) (name “(A8)PC0”) (type output))
(pin (num 36) (name “(A9)PC1”) (type output))
(pin (num 37) (name “(A10)PC2”) (type output))
(pin (num 38) (name “(A11)PC3”) (type output))
(pin (num 39) (name “(A12)PC4”) (type output))
(pin (num 40) (name “(A13)PC5”) (type output))
(pin (num 41) (name “(A14)PC6”) (type output))
(pin (num 42) (name “(A15)PC7”) (type output))
(pin (num 43) (name “PG2(ALE)”) (type BiDi))
(pin (num 44) (name “(AD7)PA7”) (type BiDi))
(pin (num 45) (name “(AD6)PA6”) (type BiDi))
(pin (num 46) (name “(AD5)PA5”) (type BiDi))
(pin (num 47) (name “(AD4)PA4”) (type BiDi))
(pin (num 48) (name “(AD3)PA3”) (type BiDi))
(pin (num 49) (name “(AD2)PA2”) (type BiDi))
(pin (num 50) (name “(AD1)PA1”) (type BiDi))
(pin (num 51) (name “(AD0)PA0”) (type BiDi))
(pin (num 52) (name VCC) (type power_in))
(pin (num 53) (name GND) (type power_in))
(pin (num 54) (name “PF7(ADC7/TDI)”) (type input))
(pin (num 55) (name “PF6(ADC6/TDO)”) (type input))
(pin (num 56) (name “PF5(ADC5/TMS)”) (type input))
(pin (num 57) (name “PF4(ADC4/TCK)”) (type input))
(pin (num 58) (name “PF3(ADC3)”) (type input))
(pin (num 59) (name “PF2(ADC2)”) (type input))
(pin (num 60) (name “PF1(ADC1)”) (type input))
(pin (num 61) (name “PF0(ADC0)”) (type input))
(pin (num 62) (name AREF) (type BiDi))
(pin (num 63) (name AGND) (type power_in))
(pin (num 64) (name AVCC) (type power_in))))
(libpart (lib OzPi) (part Allwinner_H3)
(footprints
(fp BGA-144_12x12_13.0x13.0mm_Pitch1.0mm))
(fields
(field (name Reference) U)
(field (name Value) Allwinner_H3))
(pins
(pin (num A1) (name JTAG-SE_L0) (type input))
(pin (num A2) (name EPHY_LI_NK_LED) (type input))
(pin (num A3) (name EPHY_T_XN) (type input))
(pin (num A4) (name EPHY_R_XN) (type input))
(pin (num E2) (name HTXCN) (type input))
(pin (num E3) (name PG9) (type input))
(pin (num F10) (name PA8) (type input))
(pin (num F11) (name PA11) (type input)))))
(libraries
(library (logical atmel)
(uri /usr/share/kicad/library/atmel.lib))
(library (logical OzPi)
(uri “/home/bianchi/Documents/ORANGE PI/OrangePiLiteSch/OzPi.lib”)))
(nets
(net (code 1) (name “Net-(IC1-Pad49)”)
(node (ref IC1) (pin 49))
(node (ref U1) (pin A3)))
(net (code 2) (name “Net-(IC1-Pad50)”)
(node (ref IC1) (pin 50))
(node (ref U1) (pin A2)))
(net (code 3) (name “Net-(IC1-Pad51)”)
(node (ref IC1) (pin 51))
(node (ref U1) (pin A1)))
(net (code 4) (name “Net-(IC1-Pad59)”)
(node (ref IC1) (pin 59)))
(net (code 5) (name “Net-(IC1-Pad39)”)
(node (ref IC1) (pin 39)))
(net (code 6) (name “Net-(IC1-Pad29)”)
(node (ref IC1) (pin 29))
(node (ref U1) (pin F10)))
(net (code 7) (name “Net-(IC1-Pad19)”)
(node (ref IC1) (pin 19)))
(net (code 8) (name “Net-(IC1-Pad58)”)
(node (ref IC1) (pin 58)))
(net (code 9) (name “Net-(IC1-Pad38)”)
(node (ref IC1) (pin 38)))
(net (code 10) (name “Net-(IC1-Pad28)”)
(node (ref IC1) (pin 28)))
(net (code 11) (name “Net-(IC1-Pad18)”)
(node (ref IC1) (pin 18)))
(net (code 12) (name “Net-(IC1-Pad57)”)
(node (ref IC1) (pin 57)))
(net (code 13) (name “Net-(IC1-Pad47)”)
(node (ref IC1) (pin 47)))
(net (code 14) (name “Net-(IC1-Pad37)”)
(node (ref IC1) (pin 37)))
(net (code 15) (name “Net-(IC1-Pad30)”)
(node (ref IC1) (pin 30))
(node (ref U1) (pin F11)))
(net (code 16) (name “Net-(IC1-Pad48)”)
(node (ref IC1) (pin 48))
(node (ref U1) (pin A4)))
(net (code 17) (name “Net-(IC1-Pad27)”)
(node (ref IC1) (pin 27)))
(net (code 18) (name “Net-(IC1-Pad31)”)
(node (ref IC1) (pin 31))
(node (ref U1) (pin E3)))
(net (code 19) (name “Net-(IC1-Pad32)”)
(node (ref IC1) (pin 32))
(node (ref U1) (pin E2)))
(net (code 20) (name “Net-(IC1-Pad40)”)
(node (ref IC1) (pin 40)))
(net (code 21) (name “Net-(IC1-Pad42)”)
(node (ref IC1) (pin 42)))
(net (code 22) (name “Net-(IC1-Pad22)”)
(node (ref IC1) (pin 22)))
(net (code 23) (name “Net-(IC1-Pad12)”)
(node (ref IC1) (pin 12)))
(net (code 24) (name “Net-(IC1-Pad61)”)
(node (ref IC1) (pin 61)))
(net (code 25) (name “Net-(IC1-Pad41)”)
(node (ref IC1) (pin 41)))
(net (code 26) (name “Net-(IC1-Pad21)”)
(node (ref IC1) (pin 21)))
(net (code 27) (name “Net-(IC1-Pad11)”)
(node (ref IC1) (pin 11)))
(net (code 28) (name “Net-(IC1-Pad60)”)
(node (ref IC1) (pin 60)))
(net (code 29) (name “Net-(IC1-Pad52)”)
(node (ref IC1) (pin 52)))
(net (code 30) (name “Net-(IC1-Pad20)”)
(node (ref IC1) (pin 20)))
(net (code 31) (name “Net-(IC1-Pad10)”)
(node (ref IC1) (pin 10)))
(net (code 32) (name “Net-(IC1-Pad9)”)
(node (ref IC1) (pin 9)))
(net (code 33) (name “Net-(IC1-Pad8)”)
(node (ref IC1) (pin 8)))
(net (code 34) (name “Net-(IC1-Pad7)”)
(node (ref IC1) (pin 7)))
(net (code 35) (name “Net-(IC1-Pad6)”)
(node (ref IC1) (pin 6)))
(net (code 36) (name “Net-(IC1-Pad5)”)
(node (ref IC1) (pin 5)))
(net (code 37) (name “Net-(IC1-Pad4)”)
(node (ref IC1) (pin 4)))
(net (code 38) (name “Net-(IC1-Pad3)”)
(node (ref IC1) (pin 3)))
(net (code 39) (name “Net-(IC1-Pad2)”)
(node (ref IC1) (pin 2)))
(net (code 40) (name “Net-(IC1-Pad54)”)
(node (ref IC1) (pin 54)))
(net (code 41) (name “Net-(IC1-Pad17)”)
(node (ref IC1) (pin 17)))
(net (code 42) (name “Net-(IC1-Pad56)”)
(node (ref IC1) (pin 56)))
(net (code 43) (name “Net-(IC1-Pad46)”)
(node (ref IC1) (pin 46)))
(net (code 44) (name “Net-(IC1-Pad36)”)
(node (ref IC1) (pin 36)))
(net (code 45) (name “Net-(IC1-Pad26)”)
(node (ref IC1) (pin 26)))
(net (code 46) (name “Net-(IC1-Pad16)”)
(node (ref IC1) (pin 16)))
(net (code 47) (name “Net-(IC1-Pad55)”)
(node (ref IC1) (pin 55)))
(net (code 48) (name “Net-(IC1-Pad45)”)
(node (ref IC1) (pin 45)))
(net (code 49) (name “Net-(IC1-Pad35)”)
(node (ref IC1) (pin 35)))
(net (code 50) (name “Net-(IC1-Pad25)”)
(node (ref IC1) (pin 25)))
(net (code 51) (name “Net-(IC1-Pad15)”)
(node (ref IC1) (pin 15)))
(net (code 52) (name “Net-(IC1-Pad64)”)
(node (ref IC1) (pin 64)))
(net (code 53) (name “Net-(IC1-Pad1)”)
(node (ref IC1) (pin 1)))
(net (code 54) (name “Net-(IC1-Pad44)”)
(node (ref IC1) (pin 44)))
(net (code 55) (name “Net-(IC1-Pad34)”)
(node (ref IC1) (pin 34)))
(net (code 56) (name “Net-(IC1-Pad24)”)
(node (ref IC1) (pin 24)))
(net (code 57) (name “Net-(IC1-Pad14)”)
(node (ref IC1) (pin 14)))
(net (code 58) (name “Net-(IC1-Pad63)”)
(node (ref IC1) (pin 63)))
(net (code 59) (name “Net-(IC1-Pad53)”)
(node (ref IC1) (pin 53)))
(net (code 60) (name “Net-(IC1-Pad43)”)
(node (ref IC1) (pin 43)))
(net (code 61) (name “Net-(IC1-Pad33)”)
(node (ref IC1) (pin 33)))
(net (code 62) (name “Net-(IC1-Pad23)”)
(node (ref IC1) (pin 23)))
(net (code 63) (name “Net-(IC1-Pad13)”)
(node (ref IC1) (pin 13)))
(net (code 64) (name “Net-(IC1-Pad62)”)
(node (ref IC1) (pin 62)))))

Is it right, mod = my_board.FindModuleByReference(“U1”) ?
Thanks

Looking at the python documentation, I can’t find “GetNodesCount()” on a net (technically a NET_INFO) object. That would cause an error, but I’m not sure the error message you’re getting is indicative of that error. I’d have to check in the Scripting Console to be sure.

It is probably best to contact the author or submit an issue in github for updating the script to the current version (or nightly version) of KiCad.